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)
无论我尝试什么,我似乎都无法弄清楚如何从输出中删除周围的括号。
您不需要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/ 与单词匹配行 netgsub( /\(|\)/ , "" )匹配(或) 并用空字符串替换它们(有效地删除)。print $3 打印仍然是 IP 地址的第三项,但没有括号一位朋友给了我这个解决方案,我想我应该将其发布在这里,以帮助其他有类似问题的人。
traceroute -w 20 -m 2 8.8.8.8 | egrep "^ 2" | sed -r -e 's/.*\(([^)]*).*/\1/'
Run Code Online (Sandbox Code Playgroud)
这是从跟踪路由输出的第二行中提取 IP 地址的更好方法,而不是依赖于定位“net”