sim*_*ico 5 vim sed text-processing csv
我有一个用逗号分隔的 CSV,我想用换行符分隔它。
输入:
a, b, c
Run Code Online (Sandbox Code Playgroud)
输出:
a
b
c
Run Code Online (Sandbox Code Playgroud)
我已经写了做这些事情的 Java 解析器,但不能用vim
其他工具来完成吗?
sed
对我不起作用:
#!/bin/sh
# Start
cat > infile.csv << __EOF__
a, b, c
__EOF__
cat infile.csv
sed 's/, /\n/g' infile.csv > outfile.csv
cat outfile.csv
Run Code Online (Sandbox Code Playgroud)
与Iain 的回答类似,您还可以使用tr
:
$ echo a,b,c | tr ',' '\n'
a
b
c
Run Code Online (Sandbox Code Playgroud)
两个答案都假设 CSV 很简单(即所有逗号都是字段分隔符)。如果你有一个像a,"b,c",d
where b,c
is a single field 这样的东西,那么事情就会变得更加困难
似乎其他答案实现了您想要的,并且可编写脚本的工具似乎是最合适的选择。
但是你问到了 vim,所以这里是你如何做到的:
%s/, /\r/g
Run Code Online (Sandbox Code Playgroud)
也就是说,用回车符替换每个逗号+空格。这将被解释为文件的适当行结束字符。(您可以通过搜索来检查这一点\r
——它不会被找到)。