?
正如我们所知
uniq [options] [file1 [file2]]
它从排序的文件 1 中删除重复的相邻行。选项 -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
版本?