2

私はファイルを持っています

cat /tmp/b
A
Quick
Brown
Fox
Killed
2 Hens 

一致すると[0-9]、期待される結果が得られます

cat /tmp/b | grep "[0-9]"
2 Hens

しかし、数字の文字クラスで一致させようとすると、予期しない結果が得られます

cat /tmp/b | grep "\d"
Killed

これは、うまくいくと思われるものの組み合わせに関係なく続きます。

cat /tmp/b | grep "\\d"
Killed
cat /tmp/b | grep "\\d"
Killed
cat /tmp/b | grep "\\\\d"
{No matches}
cat /tmp/b | grep "\\\d"
{No matches}
cat /tmp/b | grep "[\\d]"
Killed
cat /tmp/b | grep "[d]"
Killed
cat /tmp/b | grep "[\\\\d]"
Killed   

私が間違っていることと、cygwin sedでCharacter Classedを機能させる方法を知っている人はいますか

アップデート

cat /tmp/b | grep [:digit]
Quick
Killed

更新 2

cat /tmp/b | grep [[:digit:]]
2 Hens
4

2 に答える 2

0

cygwin はGNU grep regexを使用していると確信しています。\dこれは省略形をサポートしていませんが、サポートしてい[:digit:]ます。余談ですが、文字クラスの括弧dの外側に複数のバックスラッシュがある場合に、なぜ一致するのか説明できません。d

于 2013-08-21T04:26:43.667 に答える