如何从 traceroute 输出中删除 IP 地址周围的括号 ()

Spu*_*pud 6 command-line text-processing

我需要像这样从跟踪路由中提取第二个 IP 地址

traceroute -m2 8.8.8.8 |grep .net |awk '{print $3}'
(111.222.333.4444)
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我似乎都无法弄清楚如何从输出中删除周围的括号。

Ser*_*nyy 9

您不需要grep介于两者之间,使用 AWK 的模式匹配功能。

$ traceroute -m 2 8.8.8.8 | awk '/net/{gsub(/\(|\)/,"");print $3}'             
207.225.112.2
Run Code Online (Sandbox Code Playgroud)
  • /net/ 与单词匹配行 net
  • gsub( /\(|\)/ , "" )匹配() 并用空字符串替换它们(有效地删除)。
  • print $3 打印仍然是 IP 地址的第三项,但没有括号


Spu*_*pud 1

一位朋友给了我这个解决方案,我想我应该将其发布在这里,以帮助其他有类似问题的人。

traceroute -w 20 -m 2 8.8.8.8 | egrep "^ 2" | sed -r -e 's/.*\(([^)]*).*/\1/'
Run Code Online (Sandbox Code Playgroud)

这是从跟踪路由输出的第二行中提取 IP 地址的更好方法,而不是依赖于定位“net”