awk를 사용하여 +1이 여러 개 있는 모든 줄을 삭제하세요.

awk를 사용하여 +1이 여러 개 있는 모든 줄을 삭제하세요.

다음과 같은 텍스트 파일이 있습니다.

header
p1
p2
p3
header
p4
p5
p6
header
p7
p8
p9

첫 번째 헤더를 제외한 모든 헤더를 제거하고 싶으므로 결과는 다음과 같습니다.

header
p1
p2
p3
p4
p5
p6
p7
p8
p9

나는 이것이 4, +1의 배수가 아닌 모든 줄을 인쇄함으로써 달성될 수 있다고 생각합니다(즉, 4+1, 8+1, 12+1 등의 줄을 인쇄하지 마십시오). 4의 배수인 줄을 인쇄하지 않는 방법을 알고 있습니다.

cat tmp2 | awk '{if((NR % 4 != 0)) {print $0}}'

하지만 4 + 1의 배수를 인쇄하지 않게 만드는 방법을 모르겠습니다. 해결책은 간단해야 한다고 생각하지만, 거기까지 가는 방법이 조금 혼란스럽습니다.

답변1

산술을 하는 방법은 여러 가지가 있습니다.

awk 'NR==1 || (NR-1)%4' tmp2

의도가 분명해지기 때문이다.

답변2

첫 번째 행을 제외한 모든 행에 나타나는 헤더 행을 제거합니다.

awk 'NR==1 || !/header/' infile

관련 정보