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'