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

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

我需要从跟踪路由中提取第二个 IP 地址,如下所示

traceroute -m2 8.8.8.8 |grep .net |awk '{print $3}'
(111.222.333.4444)

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

答案1

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

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

答案2

我直接用tr -d来删除一组字符,比较简单。而且 awk 也可以一次性 grep:

traceroute -m 2 8.8.8.8 | awk '/.net/{print $3}'  |  tr -d '()'

答案3

做:

traceroute -m2 8.8.8.8 | grep .net | awk '{print $3}' | sed -e "s/(//" -e "s/)//"

答案4

traceroute -m2 8.8.8.8 |grep .net |awk '{print $3}' |cut -d '(' -f2 | cut -d ')' -f1 

相关内容