awk / sed:如何打印包含在两个模式中的选择

时间:2016-10-12 17:56:04

标签: awk sed

我有nmap结果,如下所示:

Starting Nmap 7.12 ( https://nmap.org ) at 2016-10-12 23:20 WIB
Nmap scan report for 192.168.1.1
Host is up (0.0013s latency).
Not shown: 2953 closed ports, 43 filtered ports
PORT     STATE SERVICE
7001/tcp open  afs3-callback
|_weblogic-t3-info: T3 protocol in use (WebLogic version: 10.3.5.0)
7002/tcp open  afs3-prserver
8001/tcp open  vcom-tunnel
|_weblogic-t3-info: T3 protocol in use (WebLogic version: 10.3.5.0)
8002/tcp open  teradataordbms
9022/tcp open  paragent

我的问题是:如何获取特定模式,然后按以下格式打印:

7001/tcp open  | afs3-callback | 10.3.5.0
8001/tcp open  | vcom-tunnel | 10.3.5.0

提前致谢

2 个答案:

答案 0 :(得分:1)

我认为这样做会:

sed '$!N; /|/{s/\([^ ]*\)\n/| \1 /;s/_.*://;s/)//p;}; D'

答案 1 :(得分:0)

我不确定我是否完全理解你,但是你可以使用sed非常轻松地打印包含在两种模式中的选择:

sed -ne '/pattern1/,/pattern2/p' file.txt

(当然,您可以从管道重定向标准输入,看起来像您的情况)。