我有一个日志文件,但我想从日志文件中删除特定端口数据
端口号是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