1

sed を使用して、次の性質の文字列を一致させて置き換えようとしていsomedate:"12/12/2012"ますsed 's/somedate:"[0-9]{2}\/[0-9]{2}\/[0-9]{4}"//g'

この式は、文字列内のどこにも一致しませんsomething and somedate:"12/12/2012" and something else

私は間違って何をしていますか?

4

1 に答える 1

3

いくつかのポイント:

  • /の区切り文字として使用しますsedが、置換にはが含まれて/いるため、などの別の区切り文字を選択するか、の置換でを|エスケープします。任意の区切り文字を。とともに使用できます。/\sed

  • 数量詞{n}は拡張正規表現クラスの一部であるため、-rオプション(または-EのBSD派生物の場合sed)を使用するか、のような拡張機能を再度エスケープします\{2\}

  • g1行に複数の一致があるかどうかによって、フラグが必要な場合と不要な場合があります。あなたの与えられた例には違いはありませんが、指摘する価値があります。

  • あなたはおそらく{1,2}何日も何ヶ月も欲しい 1/1/2012でしょう。

私はします:

$ sed -r 's|somedate:"[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}"||' file
something and  and something else

または、すべてをエスケープします。

$ sed 's/somedate:"[0-9]\{1,2\}\/[0-9]\{1,2\}\/[0-9]\{4\}"//' file
something and  and something else
于 2013-03-05T15:19:02.017 に答える