使用 '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)
归档时间: |
|
查看次数: |
245 次 |
最近记录: |