2015-03-25 76 views
1

我正在编写一个shell脚本,它遍历目录列表并计算文件中的文字。代码每次读取文件时都会打印数据。所以输出没有排序。我如何分类?如何在Bash中逐行打印时对数据进行排序

输出现在的问题是这样的:

cat 5 
door 1 
bird 3 
dog 1 

,我想先列第一的第二列,然后对其进行排序:

dog 1 
door 1 
bird 3 
cat 5 

回答

0

首先,我想重现什么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 
+0

它正在工作。如果降序呢? – aykutyilmaz 2015-03-25 11:30:55

+0

只需将'-r'添加到'sort'即可进行反向排序。 – 2015-03-25 11:31:56

+0

@Maxime还加上-k1 – JuniorCompressor 2015-03-25 11:42:27

1

可以通过管道将你的shell脚本:

sort -n -k2 -k1 

随着-n指定数值排序,并与-k2,您想先按第二个字段排序,然后按-k1排序,然后按第一个字段排序。

+0

我加许多排序管道结束我的回声,但没有任何反应。 – aykutyilmaz 2015-03-25 11:20:42

+1

你能提供你的命令吗? – JuniorCompressor 2015-03-25 11:21:55

+0

只是回声“$ name \t \t $ count”。每次文件搜索之后是否重要打印? – aykutyilmaz 2015-03-25 11:26:03

相关问题