Shell-Script
刪除具有單個公共欄位的行
我有一個製表符分隔的文件,如下所示:
123 some text 123 some different text 334 some other text 341 more text
我想做兩件事。一種是以數字順序排列所有東西(這很容易做到),另一種是如果它的數字已經存在,則刪除一行。即輸出將如下所示:
123 some text 334 some other text 341 more text
我試著得到一個只有唯一數字的文件,即
123 334 341
並將其與原始文件一起加入:
join -j 1 justNumbers.txt original.txt
但這給了我原始文件。有任何想法嗎?
如果您想專門對第一個欄位進行排序/測試唯一性,並且您的系統具有 GNU
coreutils
版本sort
,那麼我認為您可以使用sort -nu file
即。
$ sort -nu file 123 some text 334 some other text 341 more text
從
info coreutils 'sort invocation'
命令
sort -u
和sort | uniq
是等價的,但這種等價性不會擴展到任意sort
選項。 例如,sort -n -u
檢查唯一性時僅檢查初始數字字元串的值,而sort -n | uniq
檢查整行。