grep 명령을 사용하여 특정 줄 번호부터 파일 끝까지 파일을 읽습니다.

grep 명령을 사용하여 특정 줄 번호부터 파일 끝까지 파일을 읽습니다.

몇 초/분마다 추가되는 파일이 있다고 가정해 보겠습니다. 처음에는 전체 파일을 읽고 마지막 줄 번호(예: last_line_numer는 2000)를 저장했지만 나중에는 "grep" 명령을 사용하여 파일을 읽고 줄 번호 2001부터 파일 끝까지의 패턴을 찾고 싶었습니다. 우리는 어떻게 이 목표를 달성할 수 있습니까?

처음으로 다음 명령을 실행했습니다.

grep 'tracker.php' apache.log | cut -d' ' -f1-8

이제 grep 매개변수의 특정 줄 번호를 사용하여 위 명령을 실행하고 싶습니다.

답변1

tail을 사용하여 2001행에서 파일을 출력하고 결과를 명령에 파이프할 수 있습니다.

<apache.log tail +2001 | grep 'tracker.php' | cut -d' ' -f1-8

답변2

당신은 그것을 사용할 수 있습니다

awk 'NR<2001 {next} /tracker.php/ {print NR, $1,$2,$3,$4,$5,$6,$7,$8}' apache.log

또는

awk 'NR<2001 {next} /tracker.php/ {print NR, $0}' apache.log | cut -d' ' -f1-9

또한 파일에서 일치하는 줄의 원래 줄 번호도 표시됩니다.

답변3

사용 sed:

sed '1,2000d; /tracker\.php/!d' | cut -d ' ' -f-8

즉, 1행부터 2000행(포함)까지 삭제한 다음 string 을 포함하지 않는 모든 행도 삭제합니다 tracker.php. 나머지 라인을 보내서 cut.

관련 정보