【发布时间】:2014-03-29 06:24:47
【问题描述】:
这是我的输入文件:
one
two
three
four
five
six
seven
eight
nine
ten
我想把文件变成
one
two
three
NEW LINE
eight
nine
ten
使用 sed。也就是说,我想用单行NEW LINE 替换从/four/(包括)到/seven/(包括)的行。
我可以这样做
sed '/four/aNEW LINE
/four/,/seven/d' file.txt
但我想知道是否有更简单的方法,尤其是无需重复模式的方法(就像我需要使用 /four/ 一样)。
编辑根据 fedorquis 评论问题,这也可以在 awk 中(尽管出于“学术”目的,我会对 sed 解决方案感兴趣。)
编辑 2 不幸的是,输入文件表明输入文件中的单词存在逻辑顺序(one 其次是 two 三个等)。然而,在我的“现实世界”问题中,情况并非如此。我不知道文件有多少行,也不知道行 four 和 seven 之前或之后的内容。我唯一知道的是有一行four(不一定立即)后面跟着一行7。很抱歉,当我问这个问题时,我没有清楚地说明这一点,特别是因为 fedorqui 在他的回答中付出了很多努力。
【问题讨论】:
-
@fedorqui,是的,看看我的编辑。