sed替换双引号中的字符串

echo "aaa \"123456\"" | sed 's/[0-9]?/111111/'
不是应该会变成 aaa "111111"
怎么还是 aaa "123456"

echo "aaa\"123456\""|sed -n 's/[0-9]+/111111/p'

echo "aaa \"123456\"" |sed "s/123456/111111/g"
 打印结果:
 aaa "111111"

 //不能换为:echo "aaa \"123456\"" |sed "s/[0-9]/111111/g",这样会对“123456”中每个数字都进行一次替换,其结果就 为:
 aaa "111111111111111111111111111111111111"

若有帮助,还望采纳!!!谢谢。。。

  1. sed没有加上选项 -r ,因此不能支持扩展正则的表达符号 ?
  2. 扩展正则 '?' 的意思是最多匹配一次,也就是0次或者1次,加上选项 -r后的输出会变成 111111aaa 123456(我也不知道为啥了)
  3. 要想变成aaa "111111", 代码应该为
    echo "aaa "123456"" | sed -nr 's/[0-9]+/111111/p'