同じディレクトリにある5つのファイル間のすべての共通/冗長行を作成しています。
sort *.txt | uniq -d > output.txt
重複していないエントリは追加されないようにFile1.txtとマージする必要がありますが、output.txt
File2.txtの他の場所に重複した行がある場合は削除する必要があります。
どんなアドバイス? Debian の使用
編集する:出力を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と同様の操作を行います。
PS:1回の操作で同じファイルを分類して書き込むことはできません。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
重複行を削除することです。