perl - 如果每个字段没有使用 sed/awk/perl 用引号括起来,则为每个字段添加引号
问题描述
如果字段值未用引号括起来,我想为每个字段添加引号。
场景1:以下是我的输入
eno;ename;address;gender
1;AaA;"mnop qrstzyx";M
2;bB;"abc";F
3;cC;"adef;mnp";ars
4;mnp;ade;M
预期产出
"eno";"ename";"address";"gender"
"1";"AaA";"mnop qrstzyx";"M"
"2";"bB";"abc";"F"
"3";"cC";"adef;mnp";"ars"
"4";"mnp";"ade";"M"
我尝试过的选项
sed 's/[^;]*/"&"/g'
场景2:以下是我的输入
eno;ename;address;gender
1;AaA;"mnop
qrst
zyx";M
2;bB;"abc";F
3;cC;"adef;
mnp";ars
4;mnp;ade;M
预期产出
"eno";"ename";"address";"gender"
"1";"AaA";"mnop qrstzyx";"M"
"2";"bB";"abc";"F"
"3";"cC";"adef;mnp";"ars"
"4";"mnp";"ade";"M"
解决方案
使用FPAT
withgnu awk
处理 CSV 文件
awk -v FPAT='([^;]*)|("[^"]+")' -v OFS=";" '{for (i=1;i<=NF;i++) {if ($i!~/^\"/) $i="\""$i"\""}} 1' file
"eno";"ename";"address";"gender"
"1";"AaA";"mnop qrstzyx";"M"
"2";"bB";"abc";"F"
"3";"cC";"adef;mnp";"ars"
"4";"mnp";"ade";"M"
推荐阅读
- objective-c - NSMutableArrays 和循环中的内存
- pip - pip install 依赖安装旧版本的库
- hadoop - Cloudera NODE_MANAGER_UNEXPECTED_EXITS 每小时
- powershell - 以另一个用户身份连接到 Window Explorer 中的远程文件系统
- python - 如何在新列中获取所有唯一值
- android - PagerAdapter 防止破坏已经加载的视图
- python - 使用 selenium(Python)在 sfdc chrome 中存储先前条目的日期字段
- botframework - 无法在 Bot Framework v4 中的对话框之间切换
- python-2.7 - Python 2.7 的嵌入式弹性搜索
- javascript - d3js v5 添加曲线内核密度估计器