1
我知道我可以刪除重複的行沒有預先分類,例如:怎麼辦uniq的-d無預分揀(或類似的東西)
awk '!x[$0]++' file
然而,我的目標是其複製僅打印線只有一次。如果它不是預設問題
sort | uniq -d
將是完美的。但是這個順序對我來說很重要。有沒有辦法做到這一點與awk,grep或類似的東西?
我正在尋找一個不需要編寫腳本的單線程,如果可能的話。
我知道我可以刪除重複的行沒有預先分類,例如:怎麼辦uniq的-d無預分揀(或類似的東西)
awk '!x[$0]++' file
然而,我的目標是其複製僅打印線只有一次。如果它不是預設問題
sort | uniq -d
將是完美的。但是這個順序對我來說很重要。有沒有辦法做到這一點與awk,grep或類似的東西?
我正在尋找一個不需要編寫腳本的單線程,如果可能的話。
只是檢查的x[$0]
值:
awk 'x[$0]++ == 1' file.txt
以上時,它看到第二次將打印一行。
或者前綴++
:
awk '++x[$0] == 2' file.txt
嘗試從您的awk
命令中簡單地刪除!
命令。
bash-4.1$ cat /tmp/inp.txt
abc
def
abc
xyz
def
hello
bash-4.1$ awk 'x[$0]++ == 1' /tmp/inp.txt
abc
def
希望這是你所期望的!
你是否認爲'排序| uniq -d'不保存順序?它爲我''(GNU coreutils)8.4' – Inian
@Inian我認爲他的意思是說他會使用'uniq -d',如果他不必先排序它。 – lewiatan
@lewiatan到底! – badner