我有一个完整的traceroutes的txt文件及其在此表单上。
traceroute到188.164.206.1(188.164.206.1),最多30跳,60字节 包
1 83.212.10.1 (83.212.10.1) 3.257 ms 4.571 ms * 2 192.168.199.1 (192.168.199.1) 5.497 ms 3.171 ms 5.537 ms 3 ihu-1-gw.eier.access-link.grnet.gr (194.177.208.13) 11.188 ms 13.018 ms 11.305 ms 4 wind.gr-ix.gr (176.126.38.9) 14.421 ms 12.267 ms 14.714 ms
traceroute至194.39.121.182(194.39.121.182),最多30跳,60字节 包
1 ec2-50-112-0-84.us-west-2.compute.amazonaws.com(50.112.0.84) 2.026 ms 1.986 ms 1.969 ms
2 100.64.1.149(100.64.1.149)1.757 ms 100.64.1.171(100.64.1.171) 2.006 ms 100.64.1.157(100.64.1.157)2.772 ms
3 * * *
4 * * *
5 205.251.232.226(205.251.232.226)2.324 ms 205.251.232.166 (205.251.232.166)2.332 ms 205.251.232.226(205.251.232.226)2.988 MS
我试图创建一个脚本来读取文件的所有行,它只会复制(...)
内的ip adreses并将它们转移到一行。所以每个traceroute只有一行。
例如,上面的traceroute将成为
83.212.10.1 192.168.199.1 194.177.208.13 176.126.38.9
我想不出任何明显的方法如何做到这一点,提前谢谢。
答案 0 :(得分:2)
这应该做你想要的。
awk -F'[()]' '/^ / {printf "%s ", $2}'
使用FS
的标准值:
awk '/^ / {gsub(/[()]/, "", $3); printf "%s ", $3}'
或者根本不使用正则表达式:
awk '/^ / {printf "%s ", substr($3, 2, (length($3) - 2))}'
编辑:正确处理同一文件中的多个traceroute输出。
awk -F'[()]' '/^ / {printf "%s ", $2; next} /^[^[:space:]]/{print ""}'