Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Bash 更改`uniq-c的输出中列的顺序`_Bash_Shell_Sh_Uniq - Fatal编程技术网

Bash 更改`uniq-c的输出中列的顺序`

Bash 更改`uniq-c的输出中列的顺序`,bash,shell,sh,uniq,Bash,Shell,Sh,Uniq,我正在使用这个脚本读取文件,并向我显示文件中的唯一名称,还向我显示该名称在文件中存在的次数(计数数) john john William wad William john wad john wad john William john wad john wad wad john john cat student.txt | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10 其产出: 9 John 6 Wad 3 William

我正在使用这个脚本读取文件,并向我显示文件中的唯一名称,还向我显示该名称在文件中存在的次数(计数数)

john
john
William
wad
William
john
wad
john
wad
john
William
john
wad
john
wad
wad
john
john

cat student.txt | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
其产出:

9 John
6 Wad
3 William
我想改变这个格式,我想第一个名字,然后计数的数量,我怎么能用上面的脚本做到这一点

 John 9
 Wad 6
 William 3

附加到您的命令:

| awk '{print $2,$1}'
使用Perl: 用于计算每个输入行的出现次数、按最频繁到最不频繁的顺序对输出进行排序,以及打印每一行,后跟计数(以制表符分隔)的命令:

印刷品:

William 4
John    2
Wad     1
Perl one liner使用以下命令行标志:
-e
:告诉Perl在线查找代码,而不是在文件中。
-n
:一次循环输入一行,默认情况下将其分配给
$。
-l
:在行内执行代码之前,先去掉输入行分隔符(
“\n”
,默认情况下在*NIX上),然后在打印时将其追加。
-a
:在空格或
-F
选项中指定的正则表达式上将
$\ucode>拆分为数组
@F

print join“\t”,reverse@F
:从右到左读取:反转数组
@F
(输入字段),将选项卡上的元素连接到字符串中,然后打印该字符串

要将选项卡替换为空白,请使用:

打印连接“”,反转@F

您的管道太长了。Awk具有用于此目的的关联数组:

$ awk '{++count[$1]} END {for (name in count) print name, count[name]}' student.txt |
sort -nr -k 2
john 9
wad 6
William 3

将student.txt添加到您的问题中。@Cyrus添加了student.txt这是否回答了您的问题@卡西夫:看看解决你问题的方法。你尝试了什么?这一个awk{print$2,$1}用法:
cat student.txt{awk{print$1}}sort | uniq-c | sort-nr | head-n10{awk{print$2,$1}
@Kashif:正如你在自己的帖子中所指出的,你的管道输出有两列,例如
John 9
$ awk '{++count[$1]} END {for (name in count) print name, count[name]}' student.txt |
sort -nr -k 2
john 9
wad 6
William 3