ubuntu - 当其他列值在 Ubuntu 中的引号内有逗号时,将一个列值复制到 CSV 中的另一个
问题描述
输入 CSV 样本
name,mobile,address,usermobile
Testone, 111111111, "test,address"
Testtwo, 2222222222, "Testtwo,address"
现在我想将移动列值复制到 usermobile 列中。但是地址列中有一个逗号(,),虽然它在双引号内,但我没有得到预期的输出
预期产出
name,mobile,address,usermobile
Testone, 111111111, "test,address",111111111
Testtwo, 2222222222, "Testtwo,address",2222222222
我已经通过使用以下命令进行了尝试,但没有得到预期的输出
awk 'BEGIN{FPAT = "([^,]+)|(\"[^\"]+\")" && FS=OFS=","} (NR>1) && ($2!=""){$5=$2} 1' test.csv > output.csv
解决方案
使用 GNU awk:
awk 'NR>1{$(NF+1)=$2} {print}' FS=', ' OFS=', ' file
输出:
姓名、手机、地址、用户手机 Testone, 111111111, "测试, 地址", 111111111 Testtwo, 2222222222, "Testtwo, 地址", 2222222222
推荐阅读
- javascript - Jquery 插件不工作并导致控制台错误,我该如何解决?
- excel - VBA For Next Loop 在第二行之后停止
- c# - 如何解决“收到的消息意外或格式错误”
- rest - 使用 JSON Extractor 获取后,对多个请求使用相同的参数
- r - 在 Xaringan 中保留 <- 或 != 等字符序列,防止替换
- sql - 当前行和上一行之间具有特定值的窗口函数
- git - 如何发布到 .gitignore 的 dist 文件
- android - 如何使用“adb shell 设置”使设置持久化
- java - 从内部实例化一个类的多个实例
- android - 是否可以获得不带图标/仅带文本的底部导航栏