Может ли регулярное выражение редактировать определенное слово в определенной строке, переходя к строке, используя другое слово из этой строки

awk '{S[$2]+=$1}; END {for (T in S) {print S[T],T}}' << -OEF-
2 xx
4 dd
1 xx
8 mm
5 dd
1 xx
-OEF-

da

9 dd
4 xx
8 mm
0
02.07.2019, 10:14
3 ответа

Вы должны использовать awkвместо sedдля своей задачи.

Если файл разделен табуляцией:

 awk -F$'\t' '$1=="hey"{$3="HR"}{OFS=FS;print}' file

если он разделен пробелом:

awk '$1=="hey"{$3="HR"}1' file | column -t

column -tявляется необязательным для получения хорошего результата.

-1
28.01.2020, 02:39

В sed при добавлении префикса команды к регулярному выражению редактируются только строки, соответствующие этому регулярному выражению.

sed -r '/^hey\s/s/(\s)IT$/\1whatever/'
1
28.01.2020, 02:39

Чтобы найти определенную строку по шаблону в sedи заменить foo на bar, сделайте следующее:

sed '/pattern/s/foo/bar/'

Поскольку в вашем случае имена кажутся первым столбцом, вы даже можете добавить маркер^-для «начала строки» в шаблон.

1
28.01.2020, 02:39

Теги

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