grep: 일치 후 특정 줄을 출력합니다.

grep: 일치 후 특정 줄을 출력합니다.

grep을 사용하여 일치 항목을 찾은 후 특정 행 수에 해당하는 행을 출력하는 방법이 있습니까? 예를 들어 일치하는 줄, 일치 후 8번째 줄, 일치 후 17번째 줄을 출력하고 싶습니다. 이것이 가능한가?

를 사용하여 다음 17줄을 출력할 수 있다는 것을 알고 있지만 grep -A17, 사이에 있는 모든 내용 없이 유용한 줄을 얻을 수 있는지 알고 싶습니다.

답변1

파이핑을 시도해보세요 blah | grep stuff -A17 | awk "NR==1{print} NR==8{print} NR==17{print;exit}" 그러면 1번째, 8번째, 17번째 라인만 출력됩니다.

반복 패턴을 포함하려면 mod(%) 연산자를 사용할 수 있습니다.

awk "(NR-1)%17 == 0{print} (NR-8)%17 == 0{print} (NR-17)%17 == 0{print}"

관련 정보