지정된 단어로 시작하는 문자열을 삭제하는 쉘 스크립트를 작성하는 방법

지정된 단어로 시작하는 문자열을 삭제하는 쉘 스크립트를 작성하는 방법

이런 프로그램을 실행하는 쉘 스크립트가 있습니다

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이 문장은 나올 때마다 삭제하고 싶어요. 쉘스크립트를 작성하면 어떻게 할 수 있나요? 추신: 나도 시도했습니다

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

관련 정보