指定された単語で始まる文字列を削除するシェルスクリプトを作成する方法

指定された単語で始まる文字列を削除するシェルスクリプトを作成する方法

これらのプログラムを実行するシェルスクリプトがあります

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この文章は出るたびに削除したいです。シェルスクリプトを作成するとどうなりますか? 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 '! /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

おすすめ記事