Bash 对循环和显示的输出进行排序
我有一个脚本,它在一个目录中循环,并为每个文件计算某个单词的迭代次数。运行脚本时,每个文件的迭代次数将输出到屏幕。不过,我想先对列表进行排序,然后再输出 我知道我需要输出到某个地方进行排序,但我不确定如何实现这一点。在非脚本语言中,我可能会将循环的输出放入数组中,但我不认为Bash应该这样做Bash 对循环和显示的输出进行排序,bash,Bash,我有一个脚本,它在一个目录中循环,并为每个文件计算某个单词的迭代次数。运行脚本时,每个文件的迭代次数将输出到屏幕。不过,我想先对列表进行排序,然后再输出 我知道我需要输出到某个地方进行排序,但我不确定如何实现这一点。在非脚本语言中,我可能会将循环的输出放入数组中,但我不认为Bash应该这样做 for f in /home/reviews_folder/* do tr -s ' ' '\n' < $f | grep - c '<Author>' done 用于/home
for f in /home/reviews_folder/*
do
tr -s ' ' '\n' < $f | grep - c '<Author>'
done
用于/home/reviews\u文件夹中的f/*
做
tr-s''\n'<$f | grep-c''
完成
我不认为我会把排序放在循环中,那么我如何在循环和排序之间创建一个管道呢 循环是一个复合命令,循环体中的每个命令都从循环继承其标准输出。这意味着您可以简单地通过管道将循环本身传输到
排序
for f in /home/reviews_folder/*; do
tr -s ' ' '\n' < "$f" | grep -c '<Author>'
done | sort
用于/home/reviews_文件夹中的f/*;做
tr-s''\n'<“$f”| grep-c”
完成|排序
cat/home/reviews_folder/*|tr-s''\n'| grep-c'| sort
?您当前的代码似乎没有输出文件名,只是输出计数。而且-c
'看起来像一个typo@Biffen你不需要括号;一个for
循环本身就是一个命令。是的,我没有输入代码来输出文件名,但老实说,我已经试了几个小时了,不知道怎么做。我认为它类似于| sort&&echo basename$FilePath,但不确定如何安排它