Linux 仅从txt文件中提取ip地址并将其放入一行
我有一个txt文件,里面有跟踪路由和它在表单上的位置 追踪路由到188.164.206.1(188.164.206.1),最多30跳,60字节 包Linux 仅从txt文件中提取ip地址并将其放入一行,linux,bash,Linux,Bash,我有一个txt文件,里面有跟踪路由和它在表单上的位置 追踪路由到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) 1
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
追踪路由到194.39.121.182(194.39.121.182),最多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
1 ec2-50-112-0-84.us-west-2.compute.amazonaws.com(50.112.0.84)
2.026毫秒1.986毫秒1.969毫秒
2100.64.1.149(100.64.1.149)1.757毫秒100.64.1.171(100.64.1.171)
2.006毫秒100.64.1.157(100.64.1.157)2.772毫秒
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地址,并将它们传输到一行。因此,每个追踪路线将只有一条线路。
例如,上述跟踪路由将变为
83.212.10.1 192.168.199.1 194.177.208.13 176.126.38.9
我想不出任何明显的方法来做这件事,提前谢谢 这应该是你想要的
awk -F'[()]' '/^ / {printf "%s ", $2}'
为FS
使用标准值:
awk '/^ / {gsub(/[()]/, "", $3); printf "%s ", $3}'
或者根本不使用正则表达式:
awk '/^ / {printf "%s ", substr($3, 2, (length($3) - 2))}'
编辑:正确处理同一文件中的多个跟踪路由输出
awk -F'[()]' '/^ / {printf "%s ", $2; next} /^[^[:space:]]/{print ""}'
@我不认为
**
应该在输出中…@TomFenech是的,我不确定。这是一个选择,要么删除它们,要么销毁输出,要么留下它们,然后添加到所需的输出中。我错误地认为他们没有尝试标记该行,因为他们没有标记跟踪路由输出。Thnks为了快速响应,问题是txt文件中有许多跟踪路由,如果我运行你的命令,所有的追踪路线都将在一条线上传输,我希望所有的追踪路线都在一条线上。@Xenakiskotas已修复。我非常感谢你的帮助,我非常感谢你的帮助。