到目前为止,代码如下所示:
grep -rc 'Author' $1
它打印出目录中的所有文件,并将其作为参数。但是,我将如何对输出进行排序(例如):
- data1:43
- data2:56
- data3:14
进入从高到低的列表:
- data2:56
- data1:43
- data3:14
答案1
grep -rc 'Author' $1 | sort -t : -k 2,2n
如果您想要包含关键字的行数,无论它在任何给定行上重复多少次,都很好。如果你想要实际的字数,你应该使用这个
echo $1:$(grep -o 'Author' $1|wc -l) | sort -t : -k 2,2n
grep 的 -o 选项很可能在 gnu 版本的 grep 上可用。如果您使用的是较旧的遗留系统提供的 grep,则它可能不可用。只是快速提醒一下。
答案2
从最高到最低排序:
grep -rc 'Author' $1 | sort -r -t ':' -k2,2n
-r
按相反顺序排序,即从最高到最低。-t
引入分隔符。-k
介绍按哪些字段排序。这些字段由 定义的分隔符分隔-t
。此语法意味着按 2 到 2 之间的所有字段进行排序(因此仅是第二个字段)。使用数字值而不是字典顺序的方法n
(这样,eg10
就在 后面9
,而不仅仅是在 后面1
)。