在bash UNIX中对文件进行排序和打印
我有一个文件,有一堆路径,看起来是这样的:在bash UNIX中对文件进行排序和打印,bash,sorting,scripting,Bash,Sorting,Scripting,我有一个文件,有一堆路径,看起来是这样的: 7 /usr/file1564 7 /usr/file2212 6 /usr/file3542 我正在尝试使用排序拉出并打印出现次数最多的路径。以下是我目前的情况: cat temp| sort | uniq -c | sort -rk1 > temp 我不确定如何只打印最高次数。我还希望我的输出像这样打印: 7 1564 7 2212 7是出现的总数,其他数字是名称末尾的文件号。我对bash脚本比较陌生,因此非常感谢您的帮助 要仅发出输出
7 /usr/file1564
7 /usr/file2212
6 /usr/file3542
我正在尝试使用排序
拉出并打印出现次数最多的路径。以下是我目前的情况:
cat temp| sort | uniq -c | sort -rk1 > temp
我不确定如何只打印最高次数。我还希望我的输出像这样打印:
7 1564
7 2212
7是出现的总数,其他数字是名称末尾的文件号。我对bash脚本比较陌生,因此非常感谢您的帮助 要仅发出输出的第一行(具有最大的数字,因为您在前面进行的是反向数字排序),请通过
head-n1
要删除所有不是数字或空白的内容,请通过tr-cd'0-9[:space:'
要仅筛选数字最大的值,允许存在多个值,请执行以下操作:
{
read firstnum name && printf '%s\t%s\n' "$firstnum" "$name"
while read -r num name; do
[[ $num = $firstnum ]] || break
printf '%s\t%s\n' "$num" "$name"
done
} < temp
{
读取firstnum name&&printf“%s\t%s\n'$firstnum”“$name”
读取时-r num name;执行
[$num=$firstnum]| |中断
printf“%s\t%s\n”$num“$name”
完成
}
要仅发出第一行输出(具有最大的数字,因为您在前面进行的是反向数字排序),请通过头-n1
要删除所有不是数字或空白的内容,请通过tr-cd'0-9[:space:'
要仅筛选数字最大的值,允许存在多个值,请执行以下操作:
{
read firstnum name && printf '%s\t%s\n' "$firstnum" "$name"
while read -r num name; do
[[ $num = $firstnum ]] || break
printf '%s\t%s\n' "$num" "$name"
done
} < temp
{
读取firstnum name&&printf“%s\t%s\n'$firstnum”“$name”
读取时-r num name;执行
[$num=$firstnum]| |中断
printf“%s\t%s\n”$num“$name”
完成
}
要仅发出第一行输出(具有最大的数字,因为您在前面进行的是反向数字排序),请通过头-n1
要删除所有不是数字或空白的内容,请通过tr-cd'0-9[:space:'
要仅筛选数字最大的值,允许存在多个值,请执行以下操作:
{
read firstnum name && printf '%s\t%s\n' "$firstnum" "$name"
while read -r num name; do
[[ $num = $firstnum ]] || break
printf '%s\t%s\n' "$num" "$name"
done
} < temp
{
读取firstnum name&&printf“%s\t%s\n'$firstnum”“$name”
读取时-r num name;执行
[$num=$firstnum]| |中断
printf“%s\t%s\n”$num“$name”
完成
}
要仅发出第一行输出(具有最大的数字,因为您在前面进行的是反向数字排序),请通过头-n1
要删除所有不是数字或空白的内容,请通过tr-cd'0-9[:space:'
要仅筛选数字最大的值,允许存在多个值,请执行以下操作:
{
read firstnum name && printf '%s\t%s\n' "$firstnum" "$name"
while read -r num name; do
[[ $num = $firstnum ]] || break
printf '%s\t%s\n' "$num" "$name"
done
} < temp
{
读取firstnum name&&printf“%s\t%s\n'$firstnum”“$name”
读取时-r num name;执行
[$num=$firstnum]| |中断
printf“%s\t%s\n”$num“$name”
完成
}
如果要避免排序,并且允许使用awk,则可以执行以下操作:
awk '{
if($1>maxcnt) {s=$1" "substr($2,10,4); maxcnt=$1} else
if($1==maxcnt) {s=s "\n"$1" "substr($2,10,4)}} END{print s}' \
temp
如果要避免排序,并且允许使用awk,则可以执行以下操作:
awk '{
if($1>maxcnt) {s=$1" "substr($2,10,4); maxcnt=$1} else
if($1==maxcnt) {s=s "\n"$1" "substr($2,10,4)}} END{print s}' \
temp
如果要避免排序,并且允许使用awk,则可以执行以下操作:
awk '{
if($1>maxcnt) {s=$1" "substr($2,10,4); maxcnt=$1} else
if($1==maxcnt) {s=s "\n"$1" "substr($2,10,4)}} END{print s}' \
temp
如果要避免排序,并且允许使用awk,则可以执行以下操作:
awk '{
if($1>maxcnt) {s=$1" "substr($2,10,4); maxcnt=$1} else
if($1==maxcnt) {s=s "\n"$1" "substr($2,10,4)}} END{print s}' \
temp
你还没有问过至少两个与这个问题相关的问题吗?。。。你对
最高出现率的标准是什么?
?这是我关于这个特定问题的第二个问题,但我决定删除它并制作一个新的,因为它措词不当,没有答案。如果你做得太多(特别是作为一个没有良好业绩记录的新用户),删除并替换最终会被禁止. 编辑问题以使其更好,而不是替换问题。顺便说一句,您不能使用与管道开始和结束相同的temp
文件:管道首次设置时,目标文件将被清除,在管道开始处运行的程序启动之前。您是否已经询问了至少两个与此问题相关的其他问题?。。。你对最高出现率的标准是什么?
?这是我关于这个特定问题的第二个问题,但我决定删除它并制作一个新的,因为它措词不当,没有答案。如果你做得太多(特别是作为一个没有良好业绩记录的新用户),删除并替换最终会被禁止. 编辑问题以使其更好,而不是替换问题。顺便说一句,您不能使用与管道开始和结束相同的temp
文件:管道首次设置时,目标文件将被清除,在管道开始处运行的程序启动之前。您是否已经询问了至少两个与此问题相关的其他问题?。。。你对最高出现率的标准是什么?
?这是我关于这个特定问题的第二个问题,但我决定删除它并制作一个新的,因为它措词不当,没有答案。如果你做得太多(特别是作为一个没有良好业绩记录的新用户),删除并替换最终会被禁止. 编辑问题以使其更好,而不是替换问题。顺便说一句,您不能使用与管道开始和结束相同的temp
文件:管道首次设置时,目标文件将被清除,在管道开始处运行的程序启动之前。您是否已经询问了至少两个与此问题相关的其他问题?。。。你对最高出现率的标准是什么?
?这是我关于这个特定问题的第二个问题,但我决定删除它并制作一个新的,因为它措词不当,没有答案。如果你做得太多(特别是作为一个没有良好业绩记录的新用户),删除并替换最终会被禁止. 编辑问题使其更好,而不是替换它们。顺便说一句,您不能使用与两个问题相同的temp
文件