从日志文件中删除具有特定端口号的记录

从日志文件中删除具有特定端口号的记录

我有一个日志文件,但我想从日志文件中删除特定端口数据

端口号是22696
日志记录示例如下:

  87.14.101.122   22696   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0

答案1

尝试使用awk

awk '$2 !~ /^22696$/' file

此命令检查第二个字段($2默认为空格作为分隔符)/22696/从开始位置 ( ^) 到结束位置 ( $) 的精确匹配 ( ) 并反转结果 ( !)。

或者更简单(谢谢罗曼·佩雷赫雷斯特):

awk '$2!=22696' file

要安全地编辑可能很大的日志文件,请尝试使用以下命令集:

mv file{,.backup} && awk '$2!=22696' file.backup > file

此后,您可能需要使用 更改文件权限chmod

答案2

使用grep,您可以为这些线定义一个模式并使用 option 反转选择-v

grep -v '^ *[^ ]* *22696 ' file

答案3

只需使用下面的命令即可达到相同的效果

输入文件==>它由2行组成,一行有22696个条目,另一行有22697个条目。

目标是删除由 22696 组成的行

输入文件

 87.14.101.122   22696   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0
 87.14.101.122   22697   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0

命令

sed -i '/22696/d' Inputfile

输出

87.14.101.122   22697   2018-01-10 01:12:30 +0000       CONNECT gsp10-ssl.apple.com:443 HTTP/1.1        200     0       locationd/2236.0.11 CFNetwork/889.9 Darwin/17.2.0

相关内容