从管道分隔的csv创建列

时间:2016-09-08 00:53:59

标签: bash csv pipe

我有一个.csv文件,表示单个列中的所有数据以及该数据中的所有数据,它都是以管道分隔的。

目前:

COLUMN A, COLUMN B, COLUMN C  
info, info2, info3

我可以用什么bash命令打入每个列?第一行包含标题。

示例:

List<? extends IResource>

2 个答案:

答案 0 :(得分:0)

假设您被允许对列标题进行硬编码,请使用以下代码:

echo "COLUMN A, COLUMN B, COLUMN C" > out.csv && sed -e '1d;s/|/, /g' in.csv >> out.csv

示例:

$ cat in.csv 
COLUMN A
info|info2|info3
$ echo "COLUMN A, COLUMN B, COLUMN C" > out.csv && sed -e '1d;s/|/, /g' in.csv >> out.csv
$ cat out.csv
COLUMN A, COLUMN B, COLUMN C
info, info2, info3

答案 1 :(得分:0)

您也可以在awk中尝试 -

如果您的标题已经是csv格式 -

awk -F "|" 'NR==1 { print $0} ; NR > 1 {print $1","$2","$3}' file.txt

对于第一行(NR == 1),它打印出整行,其余的则以逗号分隔。

如果您的标题也是竖线分隔的,则更容易 -

awk -F "|" ' {print $1","$2","$3}' file.txt