![n개 행의 각 그룹에 대해 행 범위를 삭제하는 방법은 무엇입니까? [복사]](https://linux55.com/image/129538/n%EA%B0%9C%20%ED%96%89%EC%9D%98%20%EA%B0%81%20%EA%B7%B8%EB%A3%B9%EC%97%90%20%EB%8C%80%ED%95%B4%20%ED%96%89%20%EB%B2%94%EC%9C%84%EB%A5%BC%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
다음과 같은 파일로 시작하고 싶습니다.
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
다음과 같이 각 5개 세트 중 마지막 3개만 반환됩니다.
3
4
5
3
4
5
3
4
5
다음과 같은 코드를 사용하여 처음 2개를 성공적으로 얻었습니다.
awk -vn=2 -vm=5 'NR<=i{next}; (NR-i)%m==1{c=1}; c++<=n
하지만 마지막 그룹화에서 동일한 작업을 수행하는 데 문제가 있습니다.
답변1
이러한 작업은 모듈식 산술을 사용하면 더 쉽습니다.
awk '(NR-2)%5 && (NR-1)%5' file
3
4
5
3
4
5
3
4
5
또는 GNU sed의 n~m
("n은 m을 건너뜁니다") 표기법을 사용합니다.
sed '1~5d;2~5d' file