使用 'sed' 我想用 1234567890 替换任何 10 位数字序列
这可以工作,但不是很优雅
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/'
Run Code Online (Sandbox Code Playgroud)
这不起作用
echo "code=1111111111" | sed 's/[0-9]{10}/1234567890/'
Run Code Online (Sandbox Code Playgroud)
结果
code=1111111111
Run Code Online (Sandbox Code Playgroud)
谁能建议一个使用 'sed' 的简单优雅的解决方案?
sed默认情况下使用基本正则表达式,这意味着{10}将被视为纯文本。
您可以验证这一点:
echo "code=1{10}" | sed 's/[0-9]{10}/1234567890/'
Run Code Online (Sandbox Code Playgroud)
将输出:
1234567890
Run Code Online (Sandbox Code Playgroud)
对于您的情况,您需要:
-E选项指定您要使用扩展正则表达式。{并}像这样:\{10\}。echo "code=1111111111" | sed -E 's/[0-9]{10}/1234567890/'
echo "code=1111111111" | sed 's/[0-9]\{10\}/1234567890/'
Run Code Online (Sandbox Code Playgroud)