これは出力を生成しません。どうして? dはgrepの基本式でサポートされていませんか?
$ echo 'this 1 2 3' | grep '\s\+'
this 1 2 3
$ echo 'this 1 2 3' | grep '\w\+'
this 1 2 3
これは出力を生成しません。どうして? dはgrepの基本式でサポートされていませんか?
$ echo 'this 1 2 3' | grep '\s\+'
this 1 2 3
$ echo 'this 1 2 3' | grep '\w\+'
this 1 2 3
grep
のデフォルトモードがある(IIRC)POSIX正規表現、および\d
はPCREです:
$ echo 'this 1 2 3' | grep '\d\+'
しかし、これらはやります。 gnu grepに-P
を渡すか、perlのような正規表現にするか、\d
の代わりに[[:digit:]]
を使用してください。
[email protected] ~ $ echo 1 | grep -P '\d'
1
[email protected] ~ $ echo 1 | grep '[[:digit:]]'
1
BSD grepの-Eモードに\ dが含まれています。しかしGNU grepの-Eモードはそうではありません。それは非常に目立っている私はショックを受けている私は今それを発見しています。 –
私のためにそれらの作業(Solarisの場合)のこの$ echo 'this 1 2 3' | grep '[0-9]\+'
多分 "grep -E"オプションが役に立ちます – bortunac
なしを試してみてくださいません。 – spraff
私も。 (Cygwin) '\ +'を持っていたのですか?どういう意味ですか? –
はい、私はUbuntu 10.04で、bashを使用しています。 grepのBREの場合、いくつかの文字をエスケープする必要があります。 man grepで "Basic vs Extended Regular Express "を試してください。 – abc