
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