私のコマンドは2つのファイルを使用していますが、最初のファイル(file1
)はアルファベットの各文字が別々の行にあるファイルです。 2番目のファイル($w
私のコマンドでは)は巨大な単語のリストです。アルファベットリストと単語リストを比較して、アルファベット文字を2回含む単語を見つけ、各文字の単語数とサンプル単語を表示する必要があります。出力は次のとおりですが、アルファベット全体について
v 94 bivalve
w 94 awkward
x 3 executrix
y 196 abysmally
z 58 bedazzle
以下は私のコマンドとその結果です
for i in `cat file1`; do grep $i.*$i $w | sort | uniq -c | head -1; done
1 aardvark
1 abba
1 acacia
1 abandoned
1 abalienate
1 affability
1 ageing
1 aforethought
1 abalienation
1 hajj
1 backstroke
1 abnormally
1 accommodate
1 abalienation
1 abdominous
1 agitprop
1 quinqevalent
1 aardvark
1 abbess
1 abatement
1 absquatulate
1 bivalve
1 awkward
1 executrix
1 abysmally
1 bedazzle
ベストアンサー1
比較的新しいバージョンを使用すると仮定すると、bash
同様のことができます。
for CHAR in {a..z}
do
WORD_LIST=( $(grep "$CHAR.*$CHAR" $w) )
echo $CHAR ${#WORD_LIST[@]} ${WORD_LIST[0]}
done
私たちはサイズの数を提供するbash配列を使用しており、配列${#WORD_LIST[@]}
の最初の要素を取得しています${WORD_LIST[0]}
。
あなたの例がうまくいかないのは、一意のインスタンスのみを計算するuniq -c
ため、渡されたすべての単語の数ではなく各単語の数を提供し、最初の出力のみを取得できるからです。