gpt4 book ai didi

bash - 将特定列的值的文件拆分为单独的文件,还包括标题

转载 作者:行者123 更新时间:2023-11-29 09:47:08 27 4
gpt4 key购买 nike

完整文件.csv:

animal,number
rabbit,1
fish,2
mouse,1
dog,1
lizard,2
cat,2

我想根据第二列中的值拆分文件,并使用了这个命令:

awk 'BEGIN {FS = ","}; {print > ("file"$2".csv")}' fullfile.csv

输出:

文件1.csv

rabbit,1
mouse,1
dog,1

文件2.csv

fish,2
lizard,2
cat,2

但是 file1.csv 或 file2.csv 中没有标题,所以我尝试这样添加它:

awk 'BEGIN {FS = ","}; NR==1 { print } {print > ("file"$2".csv")}' fullfile.csv

但是标题打印到命令行而不是每个文件。如何让标题包含在每个文件中?

最佳答案

您还可以在 awk 脚本之外使用 awk -F"," 指定字段分隔符。

NR==1 时,您可以将 header 存储为变量。将文件编号存储在一个数组中,如果该编号不在数组中,则只写入一次标题。一旦值在数组中,您只需将行写入它们各自的文件,就像您之前设置的那样:

awk -F"," 'NR==1{header=$0}NR>1&&!a[$2]++{print header > ("file"$2".csv")}NR>1{print > ("file"$2".csv")}' fullfile.csv

输出:

文件1.csv

animal,number
rabbit,1
mouse,1
dog,1

文件2.csv

animal,number
fish,2
lizard,2
cat,2

关于bash - 将特定列的值的文件拆分为单独的文件,还包括标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com