我想从日志文件列中提取部件,如下所示:
xx.xxx.xx.xx#59796:编辑:
这是实际的日志行:
Jan 10 17:38:11 server named[747]: client 21x.x0.x8x.xxx#40649: view external: query (cache) 'domain.TLD/A/IN' denied上面行中"#“之前的部分是一个IP地址,我只想提取IP。"#“后面的部分是随机数,并不总是相同的。
我使用下面的命令对grep进行模式处理,提取IP列,然后将输出重定向到文本文件,但随后我必须使用编辑器从提取的列中删除额外的字符。
grep -E 'view external.*denied' /var/log/messages |awk '{print $7}' > view_external_denied_ip.txt如果我只能提取IP而没有列中的额外字符,我将使用排序命令对它们进行排序(排序\ uniq -c \排序-rn )。
发布于 2014-01-10 17:58:45
sed 's/\#.*//' /path/to/logfile # this will trim anything including and after a `#` on every line.https://unix.stackexchange.com/questions/108756
复制相似问题