csv 列中缺少第二个双引号。寻找以下任何想法/ shell 脚本
- 查找缺少结尾双引号的特定列。
- 在列末尾添加缺少的双引号。
样本数据:
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