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
Вы должны использовать awk
вместо sed
для своей задачи.
Если файл разделен табуляцией:
awk -F$'\t' '$1=="hey"{$3="HR"}{OFS=FS;print}' file
если он разделен пробелом:
awk '$1=="hey"{$3="HR"}1' file | column -t
column -t
является необязательным для получения хорошего результата.
В sed при добавлении префикса команды к регулярному выражению редактируются только строки, соответствующие этому регулярному выражению.
sed -r '/^hey\s/s/(\s)IT$/\1whatever/'
Чтобы найти определенную строку по шаблону в sed
и заменить foo на bar, сделайте следующее:
sed '/pattern/s/foo/bar/'
Поскольку в вашем случае имена кажутся первым столбцом, вы даже можете добавить маркер^
-для «начала строки» в шаблон.