onetwothreefourfivesixseveneightnineten
我想把文件变成
onetwothreeNEW liNEeightnineten
与sed.也就是说,我想用单行NEW liNE替换/ four /(包括)到/ seven /(包括)的行.
我可以这样做
sed '/four/aNEW liNE/four/,/seven/d' file.txt
但我想知道是否有一种更简单的方法,特别是一种不必重复模式(因为我需要使用/ four /).
编辑根据fedorquis评论问题,这也可以是awk(虽然出于“学术”目的,我会对sed解决方案感兴趣.)
编辑2不幸的是,输入文件表明输入文件中存在单词的逻辑顺序(一个后跟两个后跟三个等).然而,在我的“现实世界”问题中,情况并非如此.我不知道文件有多少行,也不知道第四行和第七行之前或之后的行.我知道的事情是,有一个第四行(不一定是立即)后面跟着第七行.当我提出这个问题时,我很遗憾没有明确说明这一点,特别是因为fedorqui在他的回答中投入了太多精力.
解决方法 这可能适合你(GNU sed& bash):sed $'/^four/{:a;N;/^seven/McNEWliNE\nba}' file总结
以上是内存溢出为你收集整理的如何在sed中使用单行替换两个模式之间的线?全部内容,希望文章能够帮你解决如何在sed中使用单行替换两个模式之间的线?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)