sedを使用して10桁のシーケンスを置き換える方法

sedを使用して10桁のシーケンスを置き換える方法

'sed'を使用して10桁の数字シーケンスを1234567890に置き換えたいと思います。

これはうまくいきますが、非常にエレガントではありません。

echo "code=1111111111" | sed 's/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/1234567890/'

これはうまくいきません

echo "code=1111111111" | sed 's/[0-9]{10}/1234567890/'

結果

code=1111111111

誰でも「sed」を使ってシンプルでエレガントなソリューションを提案できますか?

ベストアンサー1

sedデフォルトの正規表現はデフォルトで使用されます。つまり、{10}プレーンテキストとして扱われます。

以下で確認できます。

echo "code=1{10}" | sed 's/[0-9]{10}/1234567890/'

以下を出力します。

1234567890

あなたの場合は、次のものが必要です。

  • -E拡張正規表現を使用するように指定するには、このオプションを使用します。
  • 次のように脱出{して}ください\{10\}
echo "code=1111111111" | sed -E 's/[0-9]{10}/1234567890/'
echo "code=1111111111" | sed 's/[0-9]\{10\}/1234567890/'

おすすめ記事