grep 출력의 각 줄이 나타난 후 명령을 실행합니다.

grep 출력의 각 줄이 나타난 후 명령을 실행합니다.

시스템 로그를 지속적으로 모니터링하고 정규식 패턴이 나타난 후 몇 가지 계산을 수행하고 명령에서 출력을 grep하여 일치하는 새 줄을 계속 모니터링하고 싶습니다. 이를 달성하는 가장 좋은 방법은 tail -f이 출력을 사용하여 grep.

여기서 무엇을 사용할 수 있는지에 대한 아이디어가 있습니까?

답변1

당신이 원하는 것은 그것을 잠시 동안 옮겨서 읽는 것입니다. 단지 발생 횟수를 계산하는 간단한 예:

#!/bin/bash
a=0
tail -f input.txt | grep 'pattern' | while read line ; do
    a=$((a+1))
    echo -e "found match in $line , occurrence no. $a"
done

이것을 dd if=/dev/random of=file참고로 사용해 보았습니다. 트리거로 "패턴"만 필요하고 이전 행은 필요하지 않다고 가정해 보겠습니다.

관련 정보