我的文本文件中有这一行:

[Tue Mar 01 21:28:58.377941 2016] [evasive20:error] [pid 5098] [client 192.168.163.1:3978] client denied by server configuration: /var/www/html/test.php

我用命令把这句话改写了
grep "evasive20"

结果显示了整个句子。但我想输出包含“evasive20”的行并删除其中的[pid 5098]部分,这样显示的结果将是:
[Tue Mar 01 21:28:58.377941 2016] [evasive20:error] [client 192.168.163.1:3978] client denied by server configuration: /var/www/html/test.php

一个命令就能做到吗?或者我有没有办法把句子的前半部分和后半部分(没有[pid xxxx])?

最佳答案

当然,sed可以找到需要的行并对其进行修改:

$ sed '/evasive20/ s/\[pid [0-9]*\] //' <your-file.log

关于linux - Linux的grep命令的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35727483/

10-11 17:24