微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash – 在最后一次与sed匹配后附加一行

我们假设我有以下输入.
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

原文地址:https://www.jb51.cc/bash/384859.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐