2

我正在尝试使用命令 tcpdump 提取和收集一些客户端 IP 地址,但无法弄清楚如何让 grep/sed/awk 只给我输出的第一个 IP 地址。如果我运行以下

# tcpdump -t -i vlan4 -n  ip dst host 192.168.2
tcpdump: listening on vlan4, link-type EN10MB

tcpdump: WARNING: compensating for unaligned libpcap packets

10.28.6.1.29447 > 192.168.2.62.22: P 3758838950:3758839034..

10.28.6.1.29447 > 192.168.2.62.22: P 84:136(52) ack 117..

10.28.6.1.29447 > 192.168.2.62.22: P 136:188(52) ack 233..

10.28.6.1.29447 > 192.168.2.62.22: . ack 349 win 251 (DF)..

我只想在没有端口号的情况下获取每行的第一个 ip。所以从上面的输出我想得到......

10.28.6.1

10.28.6.1

10.28.6.1

10.28.6.1

谢谢

4

2 回答 2

1

试试这条切割线:

cut -f1-4 -d "."

用你的数据测试:

kent$ echo "10.28.6.1.29447 > 192.168.2.62.22: P 3758838950:3758839034..

10.28.6.1.29447 > 192.168.2.62.22: P 84:136(52) ack 117..

10.28.6.1.29447 > 192.168.2.62.22: P 136:188(52) ack 233..

10.28.6.1.29447 > 192.168.2.62.22: . ack 349 win 251 (DF).."|cut -f1-4 -d "."
10.28.6.1

10.28.6.1

10.28.6.1

10.28.6.1
于 2013-03-05T21:01:36.880 回答
0
perl -lane '$F[0]=~s/(.*)\..*/$1/g;print $F[0]' your_file
于 2013-03-06T02:19:27.777 回答