当使用sed在文件中匹配模式时,我想要持续几行。 如果文件有以下条目:
This is the first line.
This is the second line.
This is the third line.
This is the forth line.
This is the Last line.
所以,搜索模式,“最后”并打印最后几行..
答案 0 :(得分:0)
使用sed查找'Last'并将其传递给tail命令,该命令打印文件的最后n行-n指定no。要从文件末尾读取的行,这里我正在读取文件的最后两行。
sed '/Last/ p' yourfile.txt|tail -n 2
有关尾部使用的更多信息man tail
。
此外,此处的|
符号称为管道(未命名管道),有助于进程间通信。因此,简单来说,sed
使用管道将数据提供给tail
命令。
答案 1 :(得分:0)
我认为你的意思是“找到模式并打印之前的几行”。 $ grep -B 3 "Last" file
This is the second line.
This is the third line.
This is the forth line.
This is the Last line.
是你的朋友:打印前3行:
-B n
-A n
表示“之前”。还有-C n
(“之后”)和{{1}}(“上下文”,包括之前和之后)。
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed ':a;$!{N;s/\n/&/2;Ta};/Last/P;D' file
这将打印包含Last
和前两行的行。
N.B。这只会在比赛前打印一次。通过将2
更改为您想要的多行来显示更多行。