「x」の前にスペース文字以外の非スペース文字"
と任意の数のスペース文字が続く場合、「x」に一致する正規表現があります。
[^"\s]\s*x
これはJavaScriptで期待どおりに機能します。
$ node
> /[^"\s]\s*x/.test('x')
false
> /[^"\s]\s*x/.test(' x')
false
> /[^"\s]\s*x/.test('" x')
false
> /[^"\s]\s*x/.test(': x')
true
ただし、grepの動作は異なります。
$ echo 'x' | grep '[^"\s]\s*x'
$ echo ' x' | grep '[^"\s]\s*x'
x
$ echo '" x' | grep '[^"\s]\s*x'
" x
$ echo ': x' | grep '[^"\s]\s*x'
: x
この動作の説明はありますか?grepの正規表現を書き直して、意図したとおりに動作するようにするにはどうすればよいですか?