如何使用csvkit将csv格式化为多行换行符分隔的纯文本输出

时间:2018-07-08 14:39:20

标签: csvkit

我有这样的csv,

type,name,ad1,pin,ph
"A","aaaaa","23 rd.","45789","4578954"
"F","bbbbb","23 rd.","84789","4578954"
"D","ccccc","34 rd.","45646","7845663"

这需要格式化为这样的纯文本文件。

type
name
ad1, PIN-pin
PH: ph

所以最终输出将是这样。

A
aaaaa
23 rd., PIN- 45789,
PH: 4578954

F
bbbbb
23 rd. PIN-84789
PH:4578954

D
ccccc
34 rd., PIN-45646
PH: 7845663

是否可以在csvkit中实现此目的。

1 个答案:

答案 0 :(得分:1)

您可以使用Miller(https://github.com/johnkerl/miller/releases/tag/5.4.0):

<body>

拥有

<head>

一些注意事项:

  • Connection.prepareStatement将CSV转换为XTAB(http://johnkerl.org/miller/doc/file-formats.html#XTAB:_Vertical_tabular);
  • executeQuery(String)将制表符设置为对分隔符
  • executeQuery()以所需的方式设置字段(我创建了4个新字段,分别名为1、2、3和4)
  • mlr --c2x --ops "\t" put '$1=$type;$2=$name;$3=($ad1 . ", PIN-" . $pin);$4=("PH: " . $ph)' \ then cut -r -f "^[0-9]" input.csv | \ cut -f2 (在管道之前)以删除除1、2、3和4以外的所有字段
  • 最后A aaaaa 23 rd., PIN-45789 PH: 4578954 F bbbbb 23 rd., PIN-84789 PH: 4578954 D ccccc 34 rd., PIN-45646 PH: 7845663 个删除字段名称