我们假设我有以下输入.
Header thing0 some info thing4 some info thing4 some info thing4 some info thing2 some info thing2 some info thing3 some info
现在,我想能够像这样在“thing4”的最后一次成功比赛中追加“foo”.
Header thing0 some info thing4 some info thing4 some info thing4 some info foo thing2 some info thing2 some info thing3 some info
订单不一定得到保证,但此示例中的顺序编号只是为了表明在某些文本行之前有一个可搜索的关键字,并且它们通常在输入中组合在一起,但不能保证.
使用单个awk,您可以:
awk 'FNR==NR{ if (/thing4/) p=NR; next} 1; FNR==p{ print "foo" }' file file Header thing0 some info thing4 some info thing4 some info thing4 some info foo thing2 some info thing2 some info thing3 some info
早期解决方案:您可以使用tac awk tac:
tac file | awk '!p && /thing4/{print "foo"; p=1} 1' | tac