나는 읽었다쉘 명령을 사용하여 ASCII 파일의 처음 n 줄을 삭제하는 방법은 무엇입니까?, 매우 도움이 됩니다. 그러나 다음과 같은 파일이 있습니다(2개의 열을 2개의 다른 파일로 간주).
1 4
1 4
1 4
1 4
1 4
3 5
3 5
3 5
3 5
3 5
7 5
7 5
7 5
7 5
7 5
2-5행을 삭제한 다음 7-10행 등을 삭제해야 합니다(유효한 출력은 1,3,7 및 4,5,5입니다).
패턴(숫자)이 몇 줄이나 반복되는지 알 수 있습니다. 하지만 여기에서 1, 3, 7과 같은 동일한 패턴을 따를 때마다 다음 파일이 4, 6, 1 또는 4, 5, 5를 가질 수 있는지는 알 수 없으므로 줄 수를 기준으로 만들어야 합니다. 그렙 값 .
행을 반복적으로 삭제하는 방법을 알려주실 수 있나요?
답변1
당신이 찾고 있는 것 같군요 uniq
.
또는 댓글에서:
sed '2,5d;7,10d;12,$d'
답변2
실제로 요구하는 것이 파일의 n 줄마다 출력하는 것이라면 다음과 같습니다.
cat file | perl -ne '$. % 5 or print'
가능한:
cat file | perl -ne '($.-1) % 5 or print'
답변3
다음 명령을 사용하십시오
cat filename | sort | uniq > filename2