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
私は間違って何をしていますか?
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
私は間違って何をしていますか?
いくつかのポイント:
/
の区切り文字として使用しますsed
が、置換にはが含まれて/
いるため、などの別の区切り文字を選択するか、の置換でを|
エスケープします。任意の区切り文字を。とともに使用できます。/
\
sed
数量詞{n}
は拡張正規表現クラスの一部であるため、-r
オプション(または-E
のBSD派生物の場合sed
)を使用するか、のような拡張機能を再度エスケープします\{2\}
。
g
1行に複数の一致があるかどうかによって、フラグが必要な場合と不要な場合があります。あなたの与えられた例には違いはありませんが、指摘する価値があります。
あなたはおそらく{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