awk를 사용하여 두 줄을 연속으로 복사하고 세 번째 줄을 건너뜁니다.

awk를 사용하여 두 줄을 연속으로 복사하고 세 번째 줄을 건너뜁니다.

매우 간단합니다 awk.

awk '(NR%3)' awk.write

이 파일의 경우:

this line 1 no un1x
this lines 22 0
butbutbut this 33 22 has unix
but not 1
THIS is not
butbutbut ffff
second line

내 결과는 다음과 같습니다

this line 1 no un1x
this lines 22 0
but not 1
THIS is not
second line

그러나 마지막 줄은 연속의 정의를 충족하지 않기 때문에 필요하지 않습니다.

세 개의 연속 행마다 처음 두 행을 얻으려면 어떻게 해야 합니까?

답변1

변수를 사용하여 이전 행이 존재하는지 추적할 수 있습니다.

$ awk '
  FNR % 3 == 1 {f = $0; next}  # The first line keep in f, skip to next line
  FNR % 3 && f {print f;print} # Previous line present, print it and current line
' <file
this line 1 no un1x
this lines 22 0
but not 1
THIS is not

또는 다음을 사용하여 sed:

sed -ne 'N;/\n/p;N;d' <file

관련 정보