需要添加 csv 文件列中不存在的第二个附件字符串

需要添加 csv 文件列中不存在的第二个附件字符串

csv 列中缺少第二个双引号。寻找以下任何想法/ shell 脚本

  1. 查找缺少结尾双引号的特定列。
  2. 在列末尾添加缺少的双引号。

样本数据:

79,A138270382563593,QMGXA1752256,Open Up,"Barry Devorzon;
3,A263163706496582,QMGXA1727673,A Different Time (Full),"BruceChianese, VTAM;

答案1

假设每一行最多有一个",并且结束引号必须插入到下一个,or之前;(并且假设每一行始终以 结尾;):

sed 's/"[^,;]*/&"/ file.csv

输出:

79,A138270382563593,QMGXA1752256,Open Up,"Barry Devorzon";
3,A263163706496582,QMGXA1727673,A Different Time (Full),"BruceChianese", VTAM;

答案2

将 a 添加"到尚未以 结尾的任何列(以逗号分隔)"


sed

sed 's/\(,"[^",;]*\)\([,;]\)/\1"\2/' file.csv

awk

awk -F, -v OFS=, '{
    for ( i = 1; i <= NF; i++ ) 
        if ($i ~ /^"/ && $i !~ /"$/) 
            $i = $i ~ /;$/ ? substr($i, 0, length($i)-1) "\";" : $i "\""
}1' file.csv

相关内容