Shell-Script

刪除具有單個公共欄位的行

  • July 5, 2014

我有一個製表符分隔的文件,如下所示:

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

但這給了我原始文件。有任何想法嗎?

如果您想專門對第一個欄位進行排序/測試唯一性,並且您的系統具有 GNUcoreutils版本sort,那麼我認為您可以使用

sort -nu file

即。

$ sort -nu file
123   some text
334   some other text
341   more text

info coreutils 'sort invocation'

命令sort -usort | uniq是等價的,但這種等價性不會擴展到任意sort選項。 例如,sort -n -u檢查唯一性時僅檢查初始數字字元串的值,而sort -n | uniq 檢查整行。

引用自:https://unix.stackexchange.com/questions/140784