我需要从跟踪路由中提取第二个 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