ファイルから入力した他のコマンドに対してmanコマンドを実行したいと思います。

ファイルから入力した他のコマンドに対してmanコマンドを実行したいと思います。

ls、echo、psなど、いくつかのコマンドを含むファイルがあります。ターミナルコマンドを使用して、どのコマンドが最も多く(ファイルで最も頻繁に表示されるか)を見つけ、それに対してmanを実行したいと思います。たとえば、私のファイルにはls ls psが含まれています。 man lsを実行する必要があります。ファイル形式は複数行で、各行には1つのコマンドしかありません。

ファイルの例:

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

関連:

おすすめ記事