我有一个包含多个命令的文件,ls,echo,ps 等。我想用终端命令查找哪个命令出现最多(在文件中出现最多),然后对其执行 man 。例如我的文件包含 ls ls ps 我必须执行 man ls。文件的形式是:多行,每行只有一个命令。
文件示例:
ls
ls
ps
echo
man
cp
rm
答案1
对文件进行排序,计算每个单词按顺序出现的次数,再次排序,但这次按数字排序(按降序排列),抓取第一个单词并删除数字(假设原始列表仅包含没有空格的单个单词) :
sort file | uniq -c | sort -nr | head -n 1 | awk '{ print $2 }'
对于给定的文件,这将产生ls
.
调用man
此命令:
man "$( sort file | uniq -c | sort -nr | head -n 1 | awk '{ print $2 }' )"
要不就
man "$( awk '++c[$1] && c[$1] > m { mc=$1; m=c[$1] } END { print mc }' file )"
有关的: