grep和awk解析行

时间:2011-02-21 16:15:03

标签: awk grep logging

我有一行看起来像:

Feb 21 1:05:14 host kernel: [112.33000] SRC=192.168.0.1 DST=90.90.90.90 PREC=0x40 TTL=51 ....

我想从SRC=

列出uniq IP

我该怎么做?感谢

6 个答案:

答案 0 :(得分:2)

这可行,但如果您愿意,可以在单个awk脚本中进一步简化:

awk  '{print $7}' <your file> | awk -F= '{print $2}' | sort -u

答案 1 :(得分:1)

grep -o 'SRC=\([^ ]\+\)' | cut -d= -f2 | sort -u

答案 2 :(得分:0)

cat thefile | grep SRC= | sed -r 's/^.*SRC=([^ ]+).*$/\1/' | sort | uniq

答案 3 :(得分:0)

这个awk脚本将执行:

{a[$7]=1} 

END{for (i in a) print i}

答案 4 :(得分:0)

这将按顺序打印IP地址而不使用“SRC =”字符串:

awk '{a[$7] = $7} END {asort(a); for (i in a) {split(a[i], b, "="); print b[2]}}' inputfile

示例输出:

192.168.0.1
192.168.0.2
192.168.1.1

答案 5 :(得分:0)

grep -Po "SRC=(.[^\s]*)" file | sed 's/SRC=//' | sort -u

红宝石(1.9 +)

ruby -ne 'puts $_.scan(/SRC=(.[^\s]*)/)[0] if /SRC=/' file| sort -u