sid*_*nup 6 sed regular-expression
所以命令是:
echo "abc 123" | sed "s/[0-9]*/h/g"
Run Code Online (Sandbox Code Playgroud)
我得到的输出为
hahbhch h
Run Code Online (Sandbox Code Playgroud)
我如何得到这个输出?
我期望的输出是 abc h
我通过这个命令得到的:
echo "abc 123" | sed "s/[0-9][0-9]*/h/g"
Run Code Online (Sandbox Code Playgroud)
谁能解释一下。。
Kir*_*ira 18
这*
意味着零个或多个匹配,并且尽快匹配。如果您在没有g
标志的情况下运行该命令(这意味着sed
将在第一次替换后停止),您将获得输出habc 123
。这是因为它从左到右开始读取,并且因为它无法匹配a
,它只会匹配行的开头然后停在那里。
使用 global ( g
) 标志,它将继续尝试匹配字符串的其余部分,并且由于*
在无法匹配其他任何内容时匹配空字符串,因此h
每次无法匹配更多数字时都会放置一个。
请注意,您的第二次尝试等效于sed "s/[0-9]\+/h/"
. 这里+
表示一个或多个匹配项,这意味着当它找不到要替换的数字时,它不会匹配空字符串。
归档时间: |
|
查看次数: |
3206 次 |
最近记录: |