파일 전체의 중복 줄 관리 [닫기]

파일 전체의 중복 줄 관리 [닫기]

동일한 디렉토리에 있는 5개 파일 사이의 모든 공통/중복 줄을 생성 중입니다.

sort *.txt | uniq -d > output.txt

중복되지 않은 항목은 추가되지 않도록 File1.txt와 병합 해야 output.txt하지만 File2.txt의 다른 곳에 중복된 줄이 있으면 제거해야 합니다.

어떤 충고? 데비안 사용

편집하다:출력을 File1과 병합하는 것은 간단합니다.

cat output.txt >> File1.txt

그런 다음 정규식을 사용하여 후속 중복 항목을 제거합니다.

답변1

두 파일(출력 및 file1.txt)을 모두 분류한 다음 uniq(스위치 없음)를 사용하여 uniq 줄을 찾고 마지막으로 결과를 file1.txt에 다시 쓸 수 있습니다.

예:

$ cat output.txt
Line1
$ cat file1.txt
Line1
Line3
Line4
$ echo "$(cat output.txt file1.txt |sort |uniq)" >file1.txt
$ cat file1.txt
Line1
Line3
Line4

"Line1"을 완전히 제거하고 한 번도 유지하지 않으려면 uniq -u를 사용하십시오.

$ echo "$(cat output.txt file1.txt |sort |uniq -u)" >file1.txt && cat file1.txt
Line3
Line4

file2와 비슷한 작업을 수행하십시오.

추신: 한 ​​번의 작업으로 동일한 파일을 분류하고 쓸 수 없습니다. echo $(...)위의 트릭을 사용 하거나 cat |uniq출력을 다른 파일(임시 파일)로 보낸 다음 임시 파일의 이름을 file1( mv tempfile file1.txt) 또는 cat tmpfile >file1.txt && rm tmpfile.

또 다른 해결책은 file1.txt( )에 output.txt를 추가하고 cat output.txt >>file1.txt이를 사용하여 sed -i중복된 줄을 제거하는 것입니다.

관련 정보