在csv中查找字符串并添加到每一行

时间:2016-07-20 17:13:32

标签: php mysql bash csv unix

我有一个csv文件,我从API获取并想加载到MySQL表中,我不确定要搜索什么来处理文件的异常性质。

CSV看起来像:

meta data
Class 1
1,2,3
5,9,7
Class 2
2,5,4
6,5,4
Class 3
8,4,3
7,8,8

我希望输出能够更轻松地加载:

Class 1,1,2,3
Class 1,5,9,7
Class 2,2,5,4
Class 2,6,5,4
Class 3,8,4,3
Class 3,7,8,8

我习惯于API返回json并在PHP中循环来加载数据。这个API只有一个csv选项 - 类总是以相同的顺序出现,所以我想可能是一个直到循环才能追加第一个值并在它运行到包含'Class'的下一行之后重复它冲洗并重复。不确定是否有更容易的方法。

1 个答案:

答案 0 :(得分:0)

使用sed:

$ sed '/^Class/{h;d};/^Class/!{G;s/\(.*\)\n\(.*\)/\2,\1/g}' file.csv
Class 1,1,2,3
Class 1,5,9,7
Class 2,2,5,4
Class 2,6,5,4
Class 3,8,4,3
Class 3,7,8,8

使用-i选项编辑文件

sed -i '/^Class/{h;d};/^Class/!{G;s/\(.*\)\n\(.*\)/\2,\1/g}' file.csv