ファイル内でshellという単語が何回使用されたかを調べる必要があります。単語が何回使用されたかを数えてみましたが、grep "shell" test.txt | wc -w
結果は3ではなく4でした。ファイルの内容は次のとおりです。
this is a test file
for shell_A
shell_B
sh
shel
and
shell_C
script project
ベストアンサー1
wc コマンドは、「for」を含む grep 出力のワード数を計算します。
> grep shell test.txt
for shell_A
shell_B
shell_C
だから実際には4つの言葉があります。
特定の単語を含むファイルの行数のみを計算するには、-c
grepオプションを使用できます。たとえば、次のようになります。
grep -c shell test.txt
これらのどれも実際には重要ではありません。性格ただし、次のような他のコンテンツと一致する可能性があります。ひも。ほとんどのgrep
実装(GNU grep、最新のBSD、AIX、HPUX、Solaris)は-w
単語オプションを提供しますが、それPOSIXにはありません。また、正規表現も認識します。たとえば、次のようになります。
grep -e '\<shell\>' test.txt
この-w
オプションに対応します。また、それPOSIXにはありません。さすがソラリス文書このため、AIXおよびHPUXの説明では-w
正規表現については言及しません。これらはすべて一貫して見えます。 「単語」を下線の英数字のシーケンスとして考えてください。
grepでPOSIX正規表現を使用して単語(スペースなどで区切られた)を一致させることができますが、例のどれも単純な「シェル」ではありません。すべて一致する別の文字があります。または英数字のみに興味がある場合(そしていいえアンダースコア)部分文字列を一致させても大丈夫です。
tr -c '[[:alnum:]]' '\n' test.txt |grep -c shell
提案されたオプション-o
はPOSIXではなく、OPが質問をLinuxまたはBSDに限定していないため、推奨されるオプションではありません。どちらの場合も一致しません。性格、しかしひも(これはOPの期待です)。
参考までに: