Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Unix命令";uniq"&&引用;排序“;_Linux_Sorting_Unix_Command_Uniq - Fatal编程技术网

Linux Unix命令";uniq"&&引用;排序“;

Linux Unix命令";uniq"&&引用;排序“;,linux,sorting,unix,command,uniq,Linux,Sorting,Unix,Command,Uniq,如我们所知 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 Lang

如我们所知

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

有谁能帮我解决一下如何按此顺序只输出书名(无编号)?

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

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

这也可以通过简化的正则表达式实现(由William Pursell提供):


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

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

这也可以通过简化的正则表达式实现(由William Pursell提供):


为什么要使用
uniq-c
打印出现次数,然后通过一些剪切/awk/sed舞蹈将其删除

相反,你可以使用

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

或者某些系统是否配备了不支持
-u
sort
版本?

为什么要使用
uniq-c
打印发生次数,然后使用剪切/awk/sed舞蹈将其删除

相反,你可以使用

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


或者有些系统附带的
sort
版本不支持
-u

cut
是一个神奇的词(其中之一)。我认为它不起作用,因为数字前面有几个空格,您如何识别字段?使用“cut-d”—f2“?它将不返回任何内容,例如“cut-c9-”,它将忽略数字,但我们必须知道计数列中的确切字符数是的,我们需要知道使用
cut
的宽度。您的意思是
-k1nr
,而不是
-1knr
,对吗?另外,感谢您的有用命令
cut
是一个神奇的词(其中之一)。我认为它不会起作用,因为数字前面有几个空格,你如何识别字段?使用“cut-d”—f2“?它将不返回任何内容,例如“cut-c9-”,它将忽略数字,但我们必须知道计数列中的确切字符数是的,我们需要知道使用
cut
的宽度。您的意思是
-k1nr
,而不是
-1knr
,对吗?另外,感谢您的有用命令!不使用“awk”命令怎么样?只使用“uniq”、“sort”、“tr”、“wc”、“head”、“tail”你已经解释了为什么
cut
在你对Michael Krelin的评论中是不好的。您可以使用
-c
选项,但我不想依赖计数列中的确切字符数。
cut
不好,但这是最简单的方法。我觉得这个解决方案很好,工具也很合适。当然,您可以在
读取时使用
执行某些操作,但实际上,
awk
正是执行此任务的正确工具。不使用“awk”命令如何?只使用“uniq”、“sort”、“tr”、“wc”、“head”、“tail”你已经解释了为什么
cut
在你对Michael Krelin的评论中是不好的。您可以使用
-c
选项,但我不想依赖计数列中的确切字符数。
cut
不好,但这是最简单的方法。我觉得这个解决方案很好,工具也很合适。当然,您可以在
读取时使用
来做一些事情,但是实际上,
awk
正是执行此任务的合适工具。这可以大大简化:
sed的/[0-9]**/g'
的确!,虽然您发布的(带有*)在我的测试中不起作用,但它在+中起作用,我在我的回答中添加了这一点,谢谢:-)在简化版本中不能有
g
标志。这会让人大吃一惊,比如“海底20000联赛”。(我把它包括进去的错误;肌肉记忆很难消失。)这可以大大简化:
sed的//[0-9]**/g'
的确如此!,虽然您发布的(带有*)在我的测试中不起作用,但它在+中起作用,我在我的回答中添加了这一点,谢谢:-)在简化版本中不能有
g
标志。这会让人大吃一惊,比如“海底20000联赛”。(我把它包括在内的错误;肌肉记忆很难消失。)
sort -u $file1 $file2 /path/to/more_files_to_glob*