如何使用多行字符串处理列

时间:2018-12-25 16:29:05

标签: awk

如何在shell脚本中处理CSV文件中的一列(其中可以包含多行)?

基本上,我正在尝试处理以下格式的CSV文件:

案例1

a,b,"Some description"
a,b,"Some other description"

案例2

a,b,"Some description on line 1
some description on line 2"
a,b,"some descrption on line 3"

问题

我通过将a和b作为变量传递来在文件上运行awk命令。因此,如果它们匹配第一列和第二列中的值,那么我需要在一个文件中包含第三列的值

案例1的预期输出
"some description"
"some other description"
案例2的预期输出
"some description on line 1
some description on line 2"
"some description on line 3"

目前,我的代码适用于第一种情况。如何修改它以同时处理第二种情况

awk -v a=${val1} -v b=${vale2} -F "," '{
    if(($1 == a) && ($2 == b)) { print }
}' input.csv | \
    awk -F "," '{
        line="";
        for(i=3;i<=NF;i++)
            if(i==3)
                line=$i;
            else
                line=line FS $i;
        print line
    }'

使用循环作为我的描述,可以在其中使用逗号)字段分隔符

0 个答案:

没有答案