【问题标题】:How to separate csv column that contains "Lastname, Firstname" into two different csv columns using bash?如何使用 bash 将包含“姓氏,名字”的 csv 列分成两个不同的 csv 列?
【发布时间】:2019-12-09 23:27:36
【问题描述】:

我有一个包含两列的 csv。一列包含“姓氏,名字”和与该名称关联的数字。我希望将带有奇怪连接列的第一列分开,并让 CSV 包含这样的标题:名字、姓氏、关联号码

csv 文件目前如下所示:

"Dinkleberg, Mark", 245
"Persoli, Kyle", 246
"Liang, Emily", 247

我希望它看起来像这样的最终结果

Mark, Dinkleberg, 245
Kyle, Persoli, 246
Emily, Liang, 247

我一直在实现我的结果的方法是使用 Excel 中的逗号分隔列功能,并将与名字关联的空格替换为空。这是一个非常乏味的过程,我想看看我如何在 Bash 中编写解决方案。

【问题讨论】:

  • 只需删除"? tr -d \" ?
  • 我们很乐意看到您目前拥有的任何代码或研究,以便读者可以在此基础上做出回答。
  • @halfer 我通过使用 excel 和 textedit replace 管理了我的结果,并以最非正统的方式得到了我想要的。因此我没有脚本。我确定那里有简单的 bash 行来实现我想要的,因此我问了。

标签: bash csv


【解决方案1】:

awk -F'[ ",]' '{print $4, $2, $7}' OFS=', ' file

或者使用csvcut

tr -d '"' file | csvcut -d ',' -c 2,1,3

 输出:

Mark, Dinkleberg, 245
Kyle, Persoli, 246
Emily, Liang, 247

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多