【问题标题】:Replace comma with space after each 3 strings每 3 个字符串后用空格替换逗号
【发布时间】:2016-06-15 13:02:02
【问题描述】:

我有一个 csv 文件,如下所示:

"user1","track1","player1","user1","track2","player2","user1","track3","player3",........

我需要做的是用空格替换逗号(不是所有的逗号),只有那些在 playerIds 之后的逗号(指定一行,以便稍后将它们导入 Mysql)。所以,我需要这样的结果:

"user1","track1","player1" "user1","track2","player2" "user1","track3","player3" ........

我发现我们可以用sed代替逗号和空格:

sed 's/,/ /g' output.csv >output2.csv

但是,它将所有逗号替换为空格。我不知道如何在每 3 个字符串之后执行此操作。任何想法?

谢谢,

【问题讨论】:

    标签: mysql regex csv sed


    【解决方案1】:

    你可以像这样使用sed

    sed -E 's/(([^,]*,){2}[^,]*),/\1 /g' file
    
    "user1","track1","player1" "user1","track2","player2" "user1","track3","player3"
    

    【讨论】:

    • 感谢您的回复..但它不起作用:(现在的输出就像"user1","track1","player1”,”user1","track2","player2”,”user1","track3","player3"
    • 我已经在我的回答中包含了输出 sed 命令。这不是你所期待的吗?
    • 是的,但是很奇怪,因为当我写你的命令时,我的输出是不同的......这是我运行你的命令后得到的 uotput:"user1","track1","player1”,”user1","track2","player2”,”user1","track3","player3‌​" :|
    • 好的,它显示了这个输出:"user1","track1","player1" "user1","track2","player2" "user1","track3","player3" .. 但是,它在文件中没有改变,你能告诉我如何在文件中改变它吗?
    • 谢谢!我也可以通过添加以下内容来更改文件:file >file2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2011-06-21
    • 2013-05-17
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多