1

我正在尝试清理一组 ipv6 ip 地址。

cat /tmp/ipaddress.txt | /bin/grep -i "unexpectedly shrunk window" | /bin/cut -d' ' -f3 | /bin/cut -d'/' -f1 | /bin/cut -d' ' -f3 | /bin/sort --uniq > /var/log/dos_ip6.txt

/tmp/ipaddress.txt 包含以下内容

TCP: Peer 0000:0000:0000:0000:0000:ffff:4df6:3e12:12345/80 unexpectedly shrunk window 1550831482:1550831483 (repaired)

/var/log/dos_ip6.txt 包含以下内容

0000:0000:0000:0000:0000:ffff:4df6:3e12:12345

我想删掉最后一个“*:12345”。

我怎样才能做到这一点

4

2 回答 2

1

如果您想使用两个或更多cut命令,也许可以考虑使用awk

awk 'BEGIN { IGNORECASE=1 } { print gensub(/(.*):.*/, "\\1", "g", $3) | "sort -u" }' /tmp/ipaddress.txt

结果:

0000:0000:0000:0000:0000:ffff:4df6:3e12

否则,一个简单的管道就sed足够了:

... | sed 's/\(.*\):.*/\1/'
于 2012-11-20T13:24:57.000 回答
0

我知道这是一个非常古老的帖子,但如果我们想cut单独使用,我们可以这样做:

echo "TCP: Peer 0000:0000:0000:0000:0000:ffff:4df6:3e12:12345/80 unexpectedly shrunk window 1550831482:1550831483 (repaired)"| cut -d" " -f3| cut -d":" -f1-8

这将导致:

0000:0000:0000:0000:0000:ffff:4df6:3e12
于 2016-08-07T12:45:17.507 回答