1. ホーム
  2. linux

[解決済み] grepの基本表現では、"d "はサポートされないのでしょうか?[クローズド]

2022-06-10 07:02:33

質問

これでは何も出力されません。どうしてでしょうか?

$ echo 'this 1 2 3' | grep '\d\+'

しかし、これらはそうです。

$ echo 'this 1 2 3' | grep '\s\+'
this 1 2 3

$ echo 'this 1 2 3' | grep '\w\+'
this 1 2 3

どのように解決するのですか?

POSIXで規定されているとおりです。 grep 基本的な正規表現 を使用していますが \d は Perl 互換の正規表現の一部です ( PCRE ).

GNU grep を使っている場合は -P オプションを使用することで、PCRE の正規表現を使用することができます。それ以外の場合は、POSIX で指定された [[:digit:]] 文字クラスの代わりに \d .

echo 1 | grep -P '\d'
# output: 1
echo 1 | grep '[[:digit:]]'
# output: 1