簡體   English   中英

Unix命令“ uniq”和“ sort”

[英]Unix command “uniq” & “sort”

如我們所知

uniq [options] [file1 [file2]]

它從已排序的file1中刪除重復的相鄰行。 選項-c將每行打印一次,對每行的實例計數。 因此,如果我們得到以下結果:

     34 Operating System
    254 Data Structure
      5 Crypo
     21 C++
   1435 C Language
    589 Java 1.6

並使用“ sort -1knr”對上述數據進行排序,結果如下:

   1435 C Language
    589 Java 1.6
    254 Data Structure
     34 Operating System
     21 C++
      5 Crypo

誰能幫我解決如何按此順序僅輸出書名(無編號)?

uniq -c filename | sort -k 1nr | awk '{$1='';print}'

您也可以使用sed ,如下所示:

uniq -c filename | sort -k -1nr | sed 's/[0-9]\+ \(.\+\)/\1/g'

測試:

echo "34 Data Structure" | sed 's/[0-9]\+ \(.\+\)/\1/g'
Data Structure

這也可以通過簡化的正則表達式來完成(由William Pursell提供):

echo "34 Data Structure" | sed 's/[0-9]* *//'
Data Structure

為什么使用uniq -c打印出現的次數,然后又想通過一些割/ awk / sed舞來刪除?

相反,您可以使用

sort -u $file1 $file2 /path/to/more_files_to_glob*

還是某些系統帶有不支持-usort版本?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM