2017-04-23 51 views
0

给定文件测试及其内容:追加到某一行使用awk文件,留下不匹配的行不变

bcd://dfl 
sf 

我想额外的信息追加到具有特定内容的行(与BCD) 开始在下面的脚本作品

awk '/bcd*/ {print $0", extra information"} ' test > test.old && mv test.old test 

它消除了不匹配的行。 (sf

是否可以将它们保存在输出文件中?

+2

追加'“,额外信息”'到'$ 0'并在'}'后面用'1'输出。还修复'/ bcd * /',它匹配任何带有'bc'的字符串。你可能意思是'/^bcd。* /'但''/^bcd /'就够了。 –

+2

将'next'添加到操作块并添加一些事实以使得在打印之后默认打印:'awk'/^bcd/{print $ 0“,extra information”;接下来} 1'' – dawg

+0

感谢它的工作 – user1264304

回答

3

在末端附加{..}1意见讨论过会解决你的问题,

awk '/^bcd/ {print $0", extra information"; next} 1' file 

因为/<pattern>/{<action>}被应用到线匹配<pattern>,其他线路都只是原样打印,{..}1是一个永远是真的无所谓条件打印行。

2
awk '/^bcd/ {$0 = $0 ", extra information"} 1' test 
相关问题