Искать шаблон во всей строке и добавить слово в той же строке - PullRequest
0 голосов
/ 07 января 2019

Мое требование: у меня есть 3 столбца, и я хочу найти какой-то шаблон и в столбце 2, и если я найду этот шаблон, добавьте определенное слово в начале той же строки. Э.Г.

abc boss 123
pqr madam 789
def boss 456
zxc boss 321
myb madam 345
poi boss 234

Теперь я хочу найти шаблон "boss" и в той же строке добавить "FOUND:" в начале этой строки в том же файле, другой контент должен быть в такте.

Желаемый вывод:

FOUND : abc boss 123
pqr madam 789
FOUND : def boss 456
FOUND : zxc boss 321
myb madam 345
FOUND : poi boss 234

Как мне это сделать с помощью команд sed или awk? Заранее спасибо. Пратик Шах

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это может сработать для вас (GNU sed):

sed 's/^\S\+\s\+boss\s\+/FOUND : &/' file

Шаблон совпадения во втором поле каждой строки будет boss и вставьте FOUND : перед любым таким совпадением.

0 голосов
/ 07 января 2019
$ cat file
abc boss 123
pqr madam 789
def boss 456
zxc boss 321
myb madam 345
poi boss 234

$ sed '/boss/s/^/FOUND: /' file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234

$ awk '/boss/{print "FOUND: " $0;next}1' file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234

Если вы хотите перенести переменную в sed или awd:

$ echo $str
boss

$ sed "/${str}/s/^/FOUND: /" file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234

$ awk -v key="$str" '$0~key{print "FOUND: " $0;next}1' file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...