[英]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*
還是某些系統帶有不支持-u
的sort
版本?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.