如何编写shell脚本来删除以指定单词开头的字符串

如何编写shell脚本来删除以指定单词开头的字符串

我有 shellscript 来运行这样的程序

sudo swatchdog -c /home/pi/.swatchdogrc -t /var/log/snort/alert  >> /home/pi/swatch/output/a.txt

我有这样的 a.txt 输出......

*** swatchdog version 3.2.4 (pid:2139) started at Sun 05 Jan 2020 05:16:17 PM +07

192.168.2.198

57312

192.168.2.238

22

192.168.2.198

57314

192.168.2.238

*** swatchdog version 3.2.4 (pid:2139) started at Sun 05 Jan 2020 05:16:17 PM +07每次出现的时候我都想把这句话删掉。我怎样才能通过编写 shellscript 来做到这一点? PS我也尝试过

cd swatch/output $ sudo swatchdog -c /home/pi/.swatcgdogrc -t /var/log/snort/alert | cut -c 82- > a.txt   

但它不打印任何东西。

谢谢。

答案1

grep

您可以使用grepwith-v选项来输出您的输入,不包括包含指定关键字的行。从手册页:

-v, --invert-match 选择不匹配的行

grep -v "keyword/pattern" file 

# Pipeline
command | grep -v "keyword/pattern" > output

所以,你的脚本将是:

sudo swatchdog -c /home/pi/.swatchdogrc -t /var/log/snort/alert | grep -v "swatchdog" >> /path/to/output.txt

awk

您还可以使用以下方法获得相同的结果awk

awk '! /keyword/ {print}' file

# Pipeline
command | awk '! /keyword/ {print} > output
sudo swatchdog -c /home/pi/.swatchdogrc -t /var/log/snort/alert | awk '! /swatchdog/ {print}' >> /path/to/output.txt

相关内容