文字列から単語の特定のインスタンスを分離します。

文字列から単語の特定のインスタンスを分離します。

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;untested2番目の項目だけが前後にtest単語文字がないため、一致します。

スペースで区切られた単語を一致させるには、次のように指定する必要があります。周りを見てくださいgrep手動アサーションとすべての実装がサポートしていない機能には、Perl準拠の正規表現が必要です。grep='grep --colorエイリアスがあるようです/オプションをサポートしているgrep場合は、--colorそのオプションもサポートできます。これにより、次のことができます。-P-X perl

grep --color -P '(?<!\S)test(?!\S)'

(?<!...)そして(?!...)それぞれPerl正規表現の不正な振り返りとプレビューアサーション演算子。 、POSIX一致、空白以外の文字\Sと同じです。[^[:space:]]つまり、「test空白以外の文字が前後にない限り一致します」

おすすめ記事