如何合并CSV文件中的两行

时间:2017-07-09 18:47:54

标签: linux sed

我的CSV文件存在以下问题。

line 1:  "x","y","z","
line 2:
line 3:  "," ",": "

这是一行,但已写成多行。不幸的是,我不能要求提供商修复它。有没有办法解决它?

2 个答案:

答案 0 :(得分:0)

阅读文件。转到每一行并将输出附加到变量。然后你就拥有了所有的线条。

$output = '';

foreach($lines as $line) {
    $output .= $line;
}

阅读csv文件,您可以使用fgetcsv。如果line 1:是csv文件的一部分,则将输出拆分为:并使用第二部分。

答案 1 :(得分:0)

一个小C程序,计算"并在此计数为奇数时抑制\n。我怀疑这是否可以用更少的行来进行...

/***
Usage ./a.out <the_file.csv > the_file.out
**/

#include <stdio.h>

int main(void)
{
int ch, state;

for(state=0; ;) {
        ch= getc(stdin);
        if (ch == EOF) break;
        if (ch == '"') state++;
        if (ch == '\n') {if (state %2) continue; else state=0; }
        putc(ch, stdout);
        }
if (state %2) {putc('"', stdout);
return 0;
}

注意:如果输入文件中有转义引号(\"),这当然会失败。