我有 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
您可以使用grep
with-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