あなたはどのようにテキストの単語の数を数えますか?a、b、cのすべての文字を含むファイル。これらの文字は単語に複数回現れることがあり、単語には他の文字も含まれている可能性があります。 (たとえば、「cabby」はカウントする必要があります)。
2を返すサンプル入力を使用する:
abc abb cabby
私は両方を試みた:
grep -E "[abc]" test.txt | wc -l
grep "abcdef" testCount.txt | wc -l
どちらも2の代わりに1を返します。
前もって感謝します!
回答:
回答№1は1あなたは使うことができます awk
の戻り値を使用します。 sub
関数。置換が成功した場合は、 sub
関数は置換の回数になります。
$ echo "abc abb cabby" |
awk "{
for(i=1;i<=NF;i++)
if(sub(/a/,"",$i)>0 && sub(/b/,"",$i)>0 && sub(/c/,"",$i)>0) {
count+=1
}
}
END{print count}"
2
我々は、3つのアルファベットのすべてについて、戻り値の条件を0より大きく保つ。ザ for loop
3つのアルファベットがすべて単語に含まれている場合、カウンタを追加するすべての行のすべての単語に対して繰り返します。
回答№2の場合は1
私はあなたが複数の呼び出しを使用して周りを回ることはできないと思います grep
。だから私は(GNU grep)と一緒に行くだろう:
<file grep -ow "w+" | grep a | grep b | grep c
出力:
abc
cabby
最初 grep
各単語をそれ自身の行に置きます。
回答№3の場合は0
これを試して、それは動作します
sed "s / / n / g" test.txt | grep a | grep b | grep c
$ cat test.txt
abc abb cabby
$ sed "s / / n / g" test.txt | grep a | grep b | grep c
abc キャベビー
お役に立てれば..