使用awk附加到某个文件行,保持不匹配的行不变

时间:2017-04-23 15:58:13

标签: linux awk text-processing

给定文件 test 及其内容:

bcd://dfl
sf

我想将额外信息附加到具有特定内容的行(从 bcd 开始) 以下脚本有效

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

删除不匹配的行。 ( SF

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

2 个答案:

答案 0 :(得分:3)

正如在评论中讨论结束时,最后添加{..}1将解决您的问题,

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

因为/<pattern>/{<action>}应用于与<pattern>匹配的 行,其他行只是按原样打印,{..}1始终 - 真 - 无 - 什么打印行的条件。

答案 1 :(得分:2)

awk '/^bcd/ {$0 = $0 ", extra information"} 1' test