Добавить текст в каждую колонку [дубликат]

Один пример:

$ echo jeff > jeff
$ echo not > not
$ echo 's/jeff/not/' | sed -i -f - *
$ cat jeff
not

Для получения дополнительной информации о том, что стандартные оболочки должны делать с расширением имени файла / пути (подстановкой), см .:

http: //pubs.opengroup. org / onlinepubs / 9699919799 / utilities / V3_chap02.html # tag_18_06_06 где говорится:

После разделения поля, если set -f не действует, каждое поле в итоговой командной строке должно быть расширено с использованием описанного алгоритма в нотации сопоставления с образцом, квалифицированной в соответствии с правилами, приведенными в разделе «Шаблоны, используемые для расширения имени файла».

3
03.04.2018, 09:21
4 ответа

Оказывается, в sed есть -опция e

sed -e 's/^/line starts at /g' -e 's/, / and ends at /' -e 's/, / with value at /'
2
27.01.2020, 21:07

awkподходит для такого рода форматированного ввода -форматированного вывода:

awk -F, '{printf("line starts at %d and ends at %d with value %d\n", $1, $2, $3)}' file 
line starts at 3 and ends at 3 with value 100
line starts at 4 and ends at 2 with value 50
line starts at 8 and ends at 5 with value 80
12
27.01.2020, 21:07

Есть простой и быстрый способ сделать это в самой оболочке:-


# cat f
3, 3, 100
4, 2, 50
8, 5, 80

# cat f | while read line ;  do  IFS=", " array=($line) ; echo "line starts at ${array[0]} and ends at ${array[1]} with value ${array[2]}"; done 

line starts at 3 and ends at 3 with value 100
line starts at 4 and ends at 2 with value 50
line starts at 8 and ends at 5 with value 80

0
27.01.2020, 21:07

Оболочка while readс петлейprintf:

while IFS=', ' read c1 c2 c3; do
    printf 'line starts at %s and ends at %s with value %s\n' \
        "$c1" "$c2" "$c3"
done <file

Установив для переменной IFSпробел и запятую, команда readбудет использовать эти символы в качестве разделителей полей.

Выход:

line starts at 3 and ends at 3 with value 100
line starts at 4 and ends at 2 with value 50
line starts at 8 and ends at 5 with value 80
3
27.01.2020, 21:07

Теги

Похожие вопросы