我正在编写一个shell脚本,它遍历目录列表并计算文件中的文字。代码每次读取文件时都会打印数据。所以输出没有排序。我如何分类?如何在Bash中逐行打印时对数据进行排序
输出现在的问题是这样的:
cat 5
door 1
bird 3
dog 1
,我想先列第一的第二列,然后对其进行排序:
dog 1
door 1
bird 3
cat 5
我正在编写一个shell脚本,它遍历目录列表并计算文件中的文字。代码每次读取文件时都会打印数据。所以输出没有排序。我如何分类?如何在Bash中逐行打印时对数据进行排序
输出现在的问题是这样的:
cat 5
door 1
bird 3
dog 1
,我想先列第一的第二列,然后对其进行排序:
dog 1
door 1
bird 3
cat 5
首先,我想重现什么OP是干什么的,所以在创建这些文件后,我想这个命令:
% for i in *; do echo -n "$i "; wc -w < $i; done
bird 3
cat 5
dog 1
door 1
然后,我已经添加了排序:
% (for i in *; do echo -n "$i "; wc -w < $i; done) | sort -n -k 2 -k 1
dog 1
door 1
bird 3
cat 5
可以通过管道将你的shell脚本:
sort -n -k2 -k1
随着-n
指定数值排序,并与-k2
,您想先按第二个字段排序,然后按-k1
排序,然后按第一个字段排序。
我加许多排序管道结束我的回声,但没有任何反应。 – aykutyilmaz 2015-03-25 11:20:42
你能提供你的命令吗? – JuniorCompressor 2015-03-25 11:21:55
只是回声“$ name \t \t $ count”。每次文件搜索之后是否重要打印? – aykutyilmaz 2015-03-25 11:26:03
它正在工作。如果降序呢? – aykutyilmaz 2015-03-25 11:30:55
只需将'-r'添加到'sort'即可进行反向排序。 – 2015-03-25 11:31:56
@Maxime还加上-k1 – JuniorCompressor 2015-03-25 11:42:27