쉘에서 N번째 줄마다 삭제

쉘에서 N번째 줄마다 삭제

N 줄 다음 줄을 삭제하기 위해 awk를 사용하려고 하는데 올바르게 수행할 수 없는 것 같습니다. 파일 형식은 이렇습니다

YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX

실제 예는

office3
3
1
office3
6
1
office3
6
3
office3
1
1

행 YY 또는 "사무실" 행을 삭제하는 방법. 내용에 관계없이 두 행마다 삭제해야 합니다.

답변1

GNU sed가 있는 경우 주소 표기법을 사용할 수 있습니다 n~m( n건너뛰기 ).m

sed '1~3d' file

첫 번째 줄부터 세 줄씩 삭제합니다.

답변2

모듈로 행만 선택해 N보세요.awk

awk '!(NR%2)' file

또는

awk 'NR%3==0' file

이는 NR지금까지 처리된 행 수를 나타냅니다.


특정 경우(모든 줄 제거 Y):

$ echo 'YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX' | awk '!(NR%3==1)'
XXXXXX
XXXXXX
XXXXXX
XXXXXX

관련 정보