【发布时间】:2017-09-27 05:53:18
【问题描述】:
似乎我的sed 命令不起作用。我正在尝试以 2.99 美元的价格选择 2。但是,无论我如何输入regex,它只会给出 .99
我想选择除美元符号之外的所有内容(每个数字)。
有什么建议?
echo "$2.99" | sed -e 's:^\([^\\$]*\).:the price is \1.:'
【问题讨论】:
标签: regex linux bash macos sed
似乎我的sed 命令不起作用。我正在尝试以 2.99 美元的价格选择 2。但是,无论我如何输入regex,它只会给出 .99
我想选择除美元符号之外的所有内容(每个数字)。
有什么建议?
echo "$2.99" | sed -e 's:^\([^\\$]*\).:the price is \1.:'
【问题讨论】:
标签: regex linux bash macos sed
问题不在于您的sed,而在于echo。请注意,$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扩展为括号内的匹配部分。
【讨论】: