동일한 디렉토리에 있는 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
중복된 줄을 제거하는 것입니다.