Debian
跨文件管理重複行
我正在同一目錄中的 5 個文件之間生成所有公共/重複行
sort *.txt | uniq -d > output.txt
我需要
output.txt
與 File1.txt 合併(因此添加任何不是重複的內容)但是在 File2.txt 的其他地方,如果出現重複行,則需要將其刪除。任何指針?使用 Debian
**編輯:**將輸出與 File1 合併很容易
cat output.txt >> File1.txt
然後使用正則表達式刪除重複項。
您可以對兩個文件(輸出和 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:您不能在一次操作中對同一個文件進行 cat 和 write。您必須使用上述
echo $(...)
技巧或將cat |uniq
輸出發送到另一個文件(臨時文件),然後將 tempfile 重命名為 file1 (mv tempfile file1.txt
) 或cat tmpfile >file1.txt && rm tmpfile
.另一種解決方案是將 output.txt 附加到 file1.txt (
cat output.txt >>file1.txt
) 並sed -i
用於刪除重複的行