如果文件包含以下内容:
Line 1
FooLine 5
Line 2
Line 55
Line 3
Line 4
Line 5
Line 6
Line 7
Line 5
Line 8
Line 9
如何删除“第 5 行”之后两行以下的行,以便文件现在仅包含以下内容?
Line 1
FooLine 5
Line 2
Line 55
Line 3
Line 4
Line 5
Line 6
Line 7
注意:这是问题的稍微改进和反转版本删除包含第一个匹配的行上方的 n 行之前的所有行
和
sed
:要就地编辑文件,请添加
-i
GNUsed
或兼容版本或-i ''
FreeBSDsed
或兼容版本的选项。这里有几种方法,这两种方法都假设您想要开始删除只包含确切字符串的行之后的两行
Line 5
:珀尔
您可以使用
perl -i -lne '$k=$. if /^Line 5$/; print; exit if $k and $.==$k+2;' file
它就地编辑文件。awk
使用任何 awk:
有关说明和相关惯用语,请参阅printing-with-sed-or-awk-a-line-following-a-matching-pattern/17914105#17914105 。
使用 awk:
使用2通道
或者使用
ed
稍微改变的: