Regex Sed:选择价格的第一部分

Regex Sed:选择价格的第一部分,regex,linux,bash,macos,sed,Regex,Linux,Bash,Macos,Sed,似乎我的sed命令不起作用。我正在尝试选择2.99美元的2。但是,无论我如何键入regex,它只会给出.99 我想选择与该期间的美元注册无关的所有内容(每个数字)。 有什么建议吗 echo“$2.99”| sed-e的:^\([^\\\$]*\):价格是\1.:“问题不在于您的sed,而在于echo。请注意,在双引号下展开时,$2是位置参数2,在本例中不展开任何内容。所以本质上你在做什么 echo ".99" | something 正确的方法是 echo '$2.99' | sed -E '

似乎我的
sed
命令不起作用。我正在尝试选择2.99美元的2。但是,无论我如何键入
regex
,它只会给出.99
我想选择与该期间的美元注册无关的所有内容(每个数字)。
有什么建议吗


echo“$2.99”| sed-e的:^\([^\\\$]*\):价格是\1.:“

问题不在于您的
sed
,而在于
echo
。请注意,在双引号下展开时,
$2
是位置参数2,在本例中不展开任何内容。所以本质上你在做什么

echo ".99" | something
正确的方法是

echo '$2.99' | sed -E 's/\$([[:digit:]]*)\..*$/The price is Dollar \1/'
#Note that $2 inside single quotes is literal $2
输出

The price is Dollar 2


注意:替换部分中的
\1
扩展到括号内的匹配部分。

问题不在于您的
sed
,而在于
echo
。请注意,在双引号下展开时,
$2
是位置参数2,在本例中不展开任何内容。所以本质上你在做什么

echo ".99" | something
正确的方法是

echo '$2.99' | sed -E 's/\$([[:digit:]]*)\..*$/The price is Dollar \1/'
#Note that $2 inside single quotes is literal $2
输出

The price is Dollar 2


注意:替换部分中的
\1
扩展到括号内的匹配部分。

谢谢!这起作用了。在你发布答案之前,我确实注意到双引号是一个问题,但现在我看到了你所做的,我可以看出我错在哪里了。您制作了完整的表达式,并使用捕获组选择了2。谢谢!这起作用了。在你发布答案之前,我确实注意到双引号是一个问题,但现在我看到了你所做的,我可以看出我错在哪里了。您制作了完整的表达式,并使用捕获组来选择2。