下一行匹配bash中的正则表达式

时间:2010-06-17 14:02:48

标签: bash

我有一个格式为的文件:

Port Number
IP address
Port Number
IP address

(不知道输出将如何显示在这里,但让我告诉你他们在不同的行上)

依旧......

我使用命令grep -C 1 'port number' file.txt 即我想要所有与特定端口相对应的IP地址。简单来说,我希望下一行匹配正则表达式。就像我的正则表达式匹配2,4和6行一样,我希望打印第3,5和7行。怎么做?

3 个答案:

答案 0 :(得分:3)

使用awk。它比sed更容易理解。

awk '/port number/{getline;print }' file
匹配'getline'后,

/port number/获取下一行。

答案 1 :(得分:1)

sed -n '/^port$/{n;p}' < file.txt

-n告诉sed在处理输入文本时不要打印输入文本。你想要这个,因为你只想看到符合你标准的行。

/^port$/限制哪些行{n;p}将对匹配指定端口的行进行操作。

{n;p}中,n表示将下一行输入读入sed的模式空间。这将是包含您的IP地址的行。 p然后告诉sed打印其模式空间,因此打印IP地址行。

答案 2 :(得分:0)

尝试一下:

sed -n '/Port Number/{n;p}' file.txt

在GNU中sed不区分大小写:

sed -n '/Port Number/I{n;p}' file.txt
相关问题