unix – 仅在第一行匹配后插入?

前端之家收集整理的这篇文章主要介绍了unix – 仅在第一行匹配后插入?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
试着这样做: @H_301_1@sed -e '/^MatchMeOnce/i\ MATCHED'

在示例文本上:

@H_301_1@Line1 Line2 MatchMeOnce Line4 MatchMeOnce Line6

如何使其仅匹配第一个记录事件并且在后续行上不匹配?

@H_301_1@Line1 Line2 MATCHED Line4 MatchMeOnce Line6
这可能对你有用: @H_301_1@sed '1,/MatchMeOnce/s//MATCHED/' file

只要MatcMeOnce在第二行或更高,或者这个(GNU sed),这将适用于sed的所有变体:

@H_301_1@sed '0,/MatchMeOnce/s//MATCHED/' file

适合上述边缘条件:

或者将整个文件篡改到内存中的另一种选择(所有sed):

@H_301_1@sed ':a;$!{N;ba};s/MatchMeOnce/MATCHED/' file

这有一个额外的好处,如果你想选择第n个而不是第一个MatchMeOnce你需要做的就是改变出现标志,即改变第二次出现:

@H_301_1@sed ':a;$!{N;ba};s/MatchMeOnce/MATCHED/2' file

要更改最后一次使用:

@H_301_1@sed ':a;$!{N;ba};s/\(.*)MatchMeOnce/\1MATCHED/' file

猜你在找的Bash相关文章