【问题标题】:(sed) Remove comma between any two numbers inside double quote (but keep the number)(sed) 删除双引号内任意两个数字之间的逗号(但保留数字)
【发布时间】:2021-03-18 03:19:54
【问题描述】:

我需要清理列出一些数字的 CSV。对于 4 位及以上的数字,它用逗号在双引号中给出数字。我需要删除这种类型的逗号。

到目前为止,我得到了这个:

sed 's/"[0-9]*\,[0-9]*"/"idk"/g'

除了其他逗号之外,它成功地识别出我正在寻找的逗号。

example,134,"idk",0.91%,8.0
example,96,"idk",2.62%,6.9
example,89,367,3.68%,5.8

我如何告诉 sed 我只需要从匹配查询中删除逗号?

编辑:抱歉,预期的输出只是删除逗号。

输入:example,89,"1,456",3.68%,5.8

输出:example,89,"1456",3.68%,5.8

【问题讨论】:

  • 您在寻找sed 's/\("[0-9]*\),\([0-9]*"\)/\1\2/g'吗? (逗号不用反斜杠,在正则表达式中没有特殊含义。)

标签: csv sed comma


【解决方案1】:

您告诉 sed “记住”其他部分并在替换字符串中使用它们。 IE。使用反向引用。

sed 's/\("[0-9]*\),\([0-9]*"\)/\1\2/g'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    相关资源
    最近更新 更多