我试图理解以下结果和差异,为什么当[0-9] *匹配123时结果不是 abc 123 123
为什么第一个答案不是abc 123 123
?
$ sed -e 's/[0-9]*/& &/' <<<'abc 123'
abc 123
为什么第二个结果为123 123 abc
?
$ sed -e 's/[0-9]*/& &/' <<<'123 abc'
123 123 abc
$ sed -e 's/[0-9]*/& &/g' <<<'abc 123'
a b c 123 123
答案 0 :(得分:3)
sed
将使用第一个匹配项。由于[0-9]*
不仅匹配3位数字123
,还匹配0位数字(空字符串),因此它将与在此处用括号标记的空字符串匹配:()abd 123
,并将其替换为{{1} }
如果您使用以下之一:
() ()abd 123
然后您要求它至少匹配 个1位数,然后按照您的期望进行操作。