我有一个有两列的csv。一列包含"姓氏,名字"和与该名称关联的数字。我希望将带有奇怪串联列的第一列分开,并使 CSV 包含如下标题:名字、姓氏、关联号码
csv 文件当前如下所示:
"Dinkleberg, Mark", 245
"Persoli, Kyle", 246
"Liang, Emily", 247
我希望它看起来像这样的最终结果是这样的
Mark, Dinkleberg, 245
Kyle, Persoli, 246
Emily, Liang, 247
我实现结果的方式是在 Excel 中使用按逗号拆分列功能,并将与名字关联的空格替换为任何内容。这是一个非常繁琐的过程,想看看我如何在 Bash 中编写解决方案。
with awk :
awk -F'[ ",]' '{print $4, $2, $7}' OFS=', ' file
或者使用 tr 和csvcut
:
tr -d '"' file | csvcut -d ',' -c 2,1,3
输出:
Mark, Dinkleberg, 245
Kyle, Persoli, 246
Emily, Liang, 247
如果名字或第二个名字中有多余的空格,这将不起作用