如何找到并替换新行?

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)

Mic*_*zek 7

Iain 的回答类似,您还可以使用tr

$ echo a,b,c | tr ',' '\n'
a
b
c
Run Code Online (Sandbox Code Playgroud)

两个答案都假设 CSV 很简单(即所有逗号都是字段分隔符)。如果你有一个像a,"b,c",dwhere b,cis a single field 这样的东西,那么事情就会变得更加困难

  • @kojiro 是的,但我不会也永远不会关心那个:)。我什至做`cat foo | grep 栏`; 我怀疑 UUOC 的狂热分子每晚都把我烧成雕像 (3认同)

Edd*_*eel 7

似乎其他答案实现了您想要的,并且可编写脚本的工具似乎是最合适的选择。

但是你问到了 vim,所以这里是你如何做到的:

%s/, /\r/g
Run Code Online (Sandbox Code Playgroud)

也就是说,用回车符替换每个逗号+空格。这将被解释为文件的适当行结束字符。(您可以通过搜索来检查这一点\r——它不会被找到)。