grep和awk解析行

grep和awk解析行,awk,grep,logging,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= 我该怎么做?谢谢这将起作用,不过如果需要,您可以在单个awk脚本中进一步简化它: cat thefile | grep SRC= | sed -r 's/^.*SRC=([^ ]+).*$/\1/' | sort | uniq awk '{print $7}' <

我有一行,看起来像:

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


我该怎么做?谢谢

这将起作用,不过如果需要,您可以在单个awk脚本中进一步简化它:

cat thefile | grep SRC= | sed -r 's/^.*SRC=([^ ]+).*$/\1/' | sort | uniq
awk  '{print $7}' <your file> | awk -F= '{print $2}' | sort -u
awk'{print$7}'|awk-F='{print$2}'| sort-u

这将起作用,但如果需要,您可以在单个awk脚本中进一步简化:

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

此awk脚本将执行以下操作:

{a[$7]=1} 

END{for (i in a) print i}

此awk脚本将执行以下操作:

{a[$7]=1} 

END{for (i in a) print i}

这将按顺序打印IP地址,不带“SRC=”字符串:

示例输出:

192.168.0.1
192.168.0.2
192.168.1.1

这将按顺序打印IP地址,不带“SRC=”字符串:

示例输出:

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

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

红宝石(1.9+)


请允许我欢迎您来到StackOverflow,并提醒我们在这里通常会做的三件事:1)当您收到帮助时,尝试给予帮助,回答您专业领域的问题2)3)当您看到好的问答时,请投票支持,因为系统的可信度是基于用户通过分享知识而获得的声誉。另外,请记住接受能更好地解决您的问题的答案,如果有,请允许我欢迎您来到StackOverflow,并提醒我们通常在这里做的三件事:1)当您收到帮助时,尝试也给予帮助,回答您专业领域的问题2)3)当您看到好的问答时,请投票支持,因为系统的可信度是基于用户通过分享知识而获得的声誉。还记得接受更好地解决您的问题的答案,如果有,我会写
awk'{split($7,a,/=/);打印[2]}文件| sort-u
,以避免调用awk两次。。。就这样!(我对awk有极大的信心:-)谢谢glenn。我会写
awk'{split($7,a,/=/);打印[2]}文件| sort-u
,以避免调用awk两次。。。就这样!(我对awk有极大的信心:-)谢谢glenn。这将为每种语言发出前缀
SRC=
line@glenn我想没关系。在我回答之前,OP评论道“谢谢大家”,所以我想我的答案没有读过。在任何情况下,substr(i,5)都可以解决问题,如果存在的话。它将为每个substr发出前缀
SRC=
line@glenn我想没关系。在我回答之前,OP评论道“谢谢大家”,所以我想我的答案没有读过。在任何情况下,substr(i,5)解决了问题(如果有)。