Search pattern in whole line and add a word in same line

时间:2019-01-07 13:35:43

标签: awk sed

My requirement is : I have 3 columns and I want to search some pattern and in column 2 and if I find that pattern then add specific word at the starting of same line. E.g.

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

Now I want to search for pattern "boss" and in same line add "FOUND : " at the start of that line in same file, other content should be in tact.

Desired output :

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

How can I do it with sed or awk commands? Thanks in advance. Pratik Shah

2 个答案:

答案 0 :(得分:1)

$ 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

如果要将变量传输到sedawd中:

$ 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

答案 1 :(得分:0)

这可能对您有用(GNU sed):

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

每行第二个字段的模式匹配为boss,并在任何此类匹配之前插入FOUND :