如何使用 bash 将包含"Lastname, Firstname"的 csv 列分成两个不同的 csv 列?



我有一个有两列的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

如果名字或第二个名字中有多余的空格,这将不起作用

最新更新