【问题标题】:Remove Dollar signs and commas from a string using sed使用 sed 从字符串中删除美元符号和逗号
【发布时间】:2013-04-26 05:48:42
【问题描述】:

对不起,如果这已经以某种形式发布。 我找不到任何可以准确回答我的问题的内容。

我是 awk、sed 和 bash 的新手。我需要为一个班级项目解决这个问题。

我有一个用逗号分隔的文本文件,所有数据都放在双引号内。

示例:

,"CHADWICK R GORE","C00538975","2012","$10,000.00",,"$10,000.00",,,"$5,000.00",,,"$15,000.00",,,,,,,,,,,,,"$15,000.00","$15,000.00",,,,

我需要从包含钱的字段中删除美元符号和逗号。 我用 sed 来做到这一点。 我的 sed 代码:

s/"\$\([^,"]*\),/"$\1/g 
s/"\$\([^"]*\)"/\1/g

这似乎是错误的,如果数字中有两个,并没有去掉所有的逗号。

任何帮助将不胜感激!谢谢

【问题讨论】:

    标签: regex sed expression


    【解决方案1】:

    这条线可以完成这项工作:

    awk -F'"' -v OFS="\"" '{for(i=1;i<=NF;i++)if($i~/^\$[0-9.,]+$/)gsub(/[$,]/,"",$i)}1'
    

    示例文本的输出是:

    ,"CHADWICK R GORE","C00538975","2012","10000.00",,"10000.00",,,"5000.00",,,"15000.00",,,,,,,,,,,,,"15000.00","15000.00",,,,
    

    【讨论】:

    • 感谢您的回复!然后我将如何在我的主 shell 脚本中使用它?如下所示:curl $URL -s | sed -f sedcommands.sed | awk -f myawk.awk myawk.awk 脚本包含汇总某些列并在最后打印它们的代码。
    • 快速而肮脏的方式是将您的输出通过管道传输到我的 awk 行。比如curl...|sed -f ..|awk -f myawk.awk|awk -F '"' .(myline here),但是你可以检查你的myawk.awk(如果它是你写的),并尝试将我的行合并到其中。
    【解决方案2】:

    tr 更容易

    tr -d '$,'
    

    -d 参数删除那些字符

    如果必须使用sed

    sed 's/[$,]//g'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      相关资源
      最近更新 更多