파일에서 여러 줄을 반복적으로 삭제하는 방법

파일에서 여러 줄을 반복적으로 삭제하는 방법

나는 읽었다쉘 명령을 사용하여 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

관련 정보