Sed:选择价格的第一部分

时间:2017-04-29 03:54:37

标签: regex linux bash macos sed

似乎我的sed命令无效。我想在2.99美元中选择2。但是,无论我如何键入regex,它只会给出.99
我想选择那些不是美元符号的一切(每个数字) 有什么建议?

echo "$2.99" | sed -e 's:^\([^\\$]*\).:the price is \1.:'

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会扩展到括号​​内的匹配部分。