有没有办法可以递归地遍历当前目录中的所有文件以找到模式,然后按从高到低的顺序打印它?

有没有办法可以递归地遍历当前目录中的所有文件以找到模式,然后按从高到低的顺序打印它?

到目前为止,代码如下所示:

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)。

相关内容