【问题标题】:Creating columns out of pipe delimited csv从管道分隔的 csv 中创建列
【发布时间】:2016-09-08 00:53:58
【问题描述】:

我有一个 .csv 文件,所有数据都在一个列中,并且在该数据中,它都是用竖线分隔的。

目前:

COLUMN A  
info|info2|info3

我可以使用什么 bash 命令将每个命令分成一列?顶行包含标题。

例子:

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

【问题讨论】:

  • 标题是否也用管道分隔?

标签: bash csv pipe


【解决方案1】:

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

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

【讨论】:

  • 谢谢!这正是我所需要的!
【解决方案2】:

你也可以在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 2021-11-20
    • 2021-10-24
    • 2014-08-10
    • 1970-01-01
    • 2016-09-05
    • 2022-12-10
    • 1970-01-01
    相关资源
    最近更新 更多