使用sed匹配模式时如何打印最后几行?

时间:2015-10-15 23:17:10

标签: linux sed

当使用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.

所以,搜索模式,“最后”并打印最后几行..

3 个答案:

答案 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更改为您想要的多行来显示更多行。