sed を使用したファイル置換の実行

sed を使用したファイル置換の実行

sedを使用して大容量ファイルの日付を変更しようとしています。私は試した:

sed -ie 's/2014-[0-9]{2}-[0-9]{2}/2014-05-07/g' test

しかし、何も起こらず、私のファイルテストは修正されません。ここで何を見逃しているのか知っていますか?

とても感謝しています。

答え1

デフォルトでは、sed以下を使用します。基本正規表現。 BREでは、、、、{}一般文字のように動作します()したがって、逃げる必要があり、次のことが必要{です}

sed -i 's/2014-[0-9]\{2\}-[0-9]\{2\}/2014-05-07/g' test

拡張正規表現を使用している場合は、エスケープする必要はありません。

sed -r -i 's/2014-[0-9]{2}-[0-9]{2}/2014-05-07/g' test

オプションはEREを-r表しますsed

   -r, --regexp-extended

          use extended regular expressions in the script.

また、-eお客様の例では使用が重複しています。

答え2

中かっこをエスケープしてみてください。

sed -ie 's/2014-[0-9]\{2\}-[0-9]\{2\}/2014-05-07/g' test

答え3

誰でも

echo "foo 2014-01-01 bar" | sed -r 's/2014-[0-9]{2}-[0-9]{2}/2014-05-07/g'

または

echo "foo 2014-01-01 bar" | sed 's/2014-[0-9]\{2\}-[0-9]\{2\}/2014-05-07/g'

関連情報