쉘에서 N번째 줄마다 삭제

쉘에서 N번째 줄마다 삭제

awk를 사용하여 N 줄 다음의 줄을 삭제하려고 하는데 제대로 할 수 없는 것 같습니다. 파일 형식은 이렇습니다

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

try를 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

관련 정보