我有一个格式为的文件:
Port Number
IP address
Port Number
IP address
(不知道输出将如何显示在这里,但让我告诉你他们在不同的行上)
依旧......
我使用命令grep -C 1 'port number' file.txt
即我想要所有与特定端口相对应的IP地址。简单来说,我希望下一行匹配正则表达式。就像我的正则表达式匹配2,4和6行一样,我希望打印第3,5和7行。怎么做?
答案 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