grep
文字列を処理するコマンドがあります
test-test test
test
コマンドが強調表示された「independent」という単語だけを表示したいと思いますtest-test
。
しかし、私が走るとき
echo "test-test test" | grep -w "test"
私はtest
起こったすべてのことを強調しました。
孤立した発生にのみ一致を制限できますかtest
?
ベストアンサー1
単語は、英数字や下線など、単語ではなく文字で区切られた一連の単語文字であるため、すべてのtest
項目が太字で表示されます。単語文字ではありません。-w
-
では、testing-test+test2;test_3;untested
2番目の項目だけが前後にtest
単語文字がないため、一致します。
スペースで区切られた単語を一致させるには、次のように指定する必要があります。周りを見てくださいgrep
手動アサーションとすべての実装がサポートしていない機能には、Perl準拠の正規表現が必要です。grep='grep --color
エイリアスがあるようです/オプションをサポートしているgrep
場合は、--color
そのオプションもサポートできます。これにより、次のことができます。-P
-X perl
grep --color -P '(?<!\S)test(?!\S)'
(?<!...)
そして(?!...)
それぞれPerl正規表現の不正な振り返りとプレビューアサーション演算子。 、POSIX一致、空白以外の文字\S
と同じです。[^[:space:]]
つまり、「test
空白以外の文字が前後にない限り一致します」