'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/'