1

1 番目と 2 番目のバリアントが機能しないのに、3 番目のバリアントが機能する理由

    #!/bin/sh
    #---------------------------------------------

    text="my:?text=this:one"
    if (echo $text | grep '^my\:\?text=this\:one') then
        echo "1"
    elif (echo $text | grep '^my:\?text=this:one') then
        echo "2"
    elif (echo $text | grep 'text=this:one') then
        echo "3"
    fi
4

4 に答える 4

7

デフォルトでは、grep は正規表現を使用しません-E。フラグを追加して、拡張正規表現を有効にします。

編集: grep はデフォルトで拡張正規表現を使用せず、通常はすばやく使用できるようにgrep -Eエイリアス化されていますegrep

于 2012-08-21T12:23:39.777 に答える
3

拡張 grep 機能にはEgrepを使用します。

echo $text | egrep '^my\:\?text=this\:one'
于 2012-08-21T12:25:17.463 に答える
1

:正規表現の特別な記号ではなく、エスケープする必要がないためです。

于 2012-08-21T12:23:12.180 に答える
1

疑問符の前のバックスラッシュを削除します。では特殊文字とは見なされませんgrep。逆に、バックスラッシュを追加すると、特別な意味が追加されます。

于 2012-08-21T12:24:49.220 に答える