Всем доброе время суток.
Есть скрипт в котором используется несколько изменяющихся переменных (пусть для примера их 3) записанных в файле filename разделенных точками, тоесть
55.44.33
Требуется sed или awk записать эти цифры в переменные a1, a2, a3 как цифры для дольнейщего арифметического использования.
Ни sed, ни awk писать в переменные шелла не могут. В любом случае читать придётся read'ом, пусть и после обработки sed'ом / awk'ом / чем-то ещё.
Например:
read a1 a2 a3 < <(cat file | tr '.' ' ')
ну это для однострочных файлов. если строк много, то так не пойдет.
а в случае с awk и вовсе можно прямо в нем проделать необходимые операции над переменными.
Ни sed, ни awk писать в переменные шелла не могут. В любом случае читать придётся read'ом, пусть и после обработки sed'ом / awk'ом / чем-то ещё.
Например:
read a1 a2 a3 < <(cat file | tr '.' ' ')
Есть скрипт в котором используется несколько изменяющихся переменных (пусть для примера их 3) записанных в файле filename разделенных точками, тоесть
Цитата
55.44.33
Требуется sed или awk записать эти цифры в переменные a1, a2, a3 как цифры для дольнейщего арифметического использования.
$ echo "1.2.3" | sed 's/\./+/g; s/.*/echo "&"|bc/e'
6
И где же здесь "переменные шелла"? (;
а в условии задачи небыло переменных. ТС предлагал переменные как один из вариантов решения. И я считаю, что переменные тут не только не обязательны, но и даже вредны. Задача была - "считать цифры из текста для их анализа" - bash практически не умеет ни работать с текстом, ни с числами, и потому решение - использовать утилиту для работы с текстом (sed), которая передаёт найденные числа в утилиту для работы с арифметикой (bc). bash тут лишний. это видно по предыдущим решениям.
Вы процитировали "ни sed, ниawk писать в переменные шелла не могут" и ответили "нет, sed - может". Т.е. Ваш ответ был неверен только по его буквальному смыслу; в отношении первоначальной задачи всё правильно.