我正在尝试获取 gnmap 文件中服务的版本。典型的一行如下所示:
Host: 192.x.x.x () Ports: 21/open/tcp//ftp//HP JetDirect ftpd/, 23/open/tcp//telnet//HP JetDirect printer telnetd (No password)/, 80/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 443/open/tcp//ssl|http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 515/open/tcp//printer///, 631/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 7627/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 9100/open/tcp/////, 14000/open/tcp//tcpwrapped/// Seq Index: 25 IP ID Seq: Incremental
我需要匹配特定的“开放”端口并仅打印匹配的表达式。我尝试过:
cat file | sed -n "/ 80\/open\/tcp\/\*\/\*\/\*\/\*\//p"
我需要的结果是:
80/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/
答案1
您可以使用带有 -o(--only-matching)选项的 grep 执行相同操作:
cat teste | grep -o "80\/open\/tcp\/[^,]*"
答案2
这是一种方法,
sed 's|.*,80\([^,]*\).*|80\1|'
并且,为了避免8080
在这里匹配 say ' ',
sed 's|.*,80\/\([^,]*\).*|80/\1|'
但是,我认为 NMAP 有更好的输出格式,可以让您的生活更轻松。
而且,您将找到更精确的方法来实现这一点。grepable 输出在 nmap 文档中。