似乎我的sed
命令无效。我想在2.99美元中选择2。但是,无论我如何键入regex
,它只会给出.99
我想选择那些不是美元符号的一切(每个数字)
有什么建议?
echo "$2.99" | sed -e 's:^\([^\\$]*\).:the price is \1.:'
答案 0 :(得分:4)
问题不在于您的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
会扩展到括号内的匹配部分。