awk를 사용하여 지속적으로 변경되는 파일을 구문 분석하는 방법은 무엇입니까?

awk를 사용하여 지속적으로 변경되는 파일을 구문 분석하는 방법은 무엇입니까?

예를 들어 다음을 포함하는 파일이 있는 경우:

Hello world
Hello earth
Hi everybody

Hello다음을 사용하여 이를 쉽게 구문 분석하여 단어가 포함된 행의 첫 번째 열과 두 번째 열을 얻을 수 있습니다 awk.

awk '/Hello/ { print $1 }' file
awk '/Hello/ { print $2 }' file

파일 내용이 변경된 경우 수행할 작업:

Hello world
Hello earth
Hi everybody
Hello sky
Hi madame
Hello USA

awk(를 사용하여 ) 이 파일에 추가된 새 항목만 구문 분석하려면 어떻게 해야 합니까 ?

Hello sky
Hi madame
Hello USA

이미 파싱된 정보를 다시 파싱할 필요가 없나요?

Hello world
Hello earth
Hi everybody

답변1

두 가지 파일을 사용할 수 있습니다.

if [ -e checkfile ]; then
  lines=$(wc -l <checkfile)
else
  lines=0
fi
# read all new lines from source file and append them to target file
sed -n $((lines+1)),\$p file >>checkfile
awk '...' checkfile

답변2

tail -ftail -F예를 들어 (또는)을 통해 파일의 내용을 파이프할 수 있습니다 .

tail -f file | awk '...'

tail매뉴얼 페이지 에서 :

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol‐
          low=descriptor are equivalent

관련 정보