【问题标题】:Sed: select first part of pricesed:选择价格的第一部分
【发布时间】: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


    【解决方案1】:

    问题不在于您的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扩展为括号内的匹配部分。

    【讨论】:

    • 谢谢!这行得通。在您发布答案之前,我确实注意到双引号是一个问题,但是现在我看到您做了什么,我可以看到我哪里出错了。您完整地制作了表达式并使用捕获组选择了 2.
    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2021-12-13
    • 2012-10-26
    • 2016-04-20
    相关资源
    最近更新 更多