ファイル全体の重複行管理 [閉じる]

ファイル全体の重複行管理 [閉じる]

同じディレクトリにある5つのファイル間のすべての共通/冗長行を作成しています。

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

重複していないエントリは追加されないようにFile1.txtとマージする必要がありますが、output.txtFile2.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重複行を削除することです。

おすすめ記事