如何将新列插入 .csv 文件?

如何将新列插入 .csv 文件?

示例数据:

"Monday","12345","Friday" 

在上面的文件中,我想在 12345 和星期五之间添加一个新列。

我怎样才能做到这一点 ?

答案1

不涉及一些重型仪器(如sedawk):

paste -d',' <(cut -d',' -f-2 file) column.file <(cut -d',' -f3- file)

这假定您要添加的列已保存在文件中column.file

答案2

假设您的数据像您显示的那样简单,您可以这样做

awk -F, -v OFS=, '{k=$3; $3="\"new text\""; $4=k}1' file

或者,

perl -F, -lane 's/$F[1]/$F[1],"new text"/; print' file

但是,对于可能包含嵌套逗号的数据,这将失败,例如:

"foo", "bar,baz", "bar" 

上面是一个有效的 csv 文件,但这些解决方案会将其视为具有 4 个字段,而不是 3 个。如果您的数据可以包含类似的情况,则应该使用适当的 csv 解析器。

答案3

我刚刚遇到了同样的问题,但是剪切/粘贴答案对我来说不太有效,因为我想要一个空白字段,所以这对我有用:

  1. 查看要插入的文件中有多少行:

    wc -l file.csv
    
  2. 假设1.给了你 30,然后使用 bash 循环在字段 3 和 4 之间插入一个空字段:

    paste -d, <(cut -d, -f-3 file.csv) <(for i in `seq 1 30`; do echo; done) <(cut -d, -f4- file.csv) > fileNew.csv
    

相关内容