我打败了我的标题,知道为什么这个简单的sed
sed&#s; s / s:?s * / z /'测试
测试
efgs:sgfe
ssssssssss
rsts
abc
没有匹配
如果我省略?
,它将起作用。我希望第一行与efgzgfe
答案 0 :(得分:2)
根据this,\?
是GNU扩展名。
在Mac上:
$ echo 'efgs:sgfe' | sed 's/s:\?s*/z/'
efgs:sgfe
在运行Debian Linux的Raspberry Pi上:
$ echo 'efgs:sgfe' | sed 's/s:\?s*/z/'
efgzgfe
这适用于:
$ echo 'efgs:sgfe' | sed 's/s:\{0,1\}s*/z/'
efgzgfe
答案 1 :(得分:1)
在之前添加斜杠?为我做了并将*改为+ - 不确定你是否希望它与第三行匹配。如果这样做,请将“+”更改回“*”。
$ cat crap.txt | sed 's/s:\?s+/z/'
efgzgfe
z
rsts
abc
您拥有的数据位于crap.txt