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