我正在尝试使用命令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
由于
答案 0 :(得分: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
答案 1 :(得分:0)
perl -lane '$F[0]=~s/(.*)\..*/$1/g;print $F[0]' your_file