我正在try 使用awk将基于唯一列值的csv文件拆分为多个文件.我能够用awk -F\, '{print > $2".csv"}' example.csv成功拆分csv,但它正在提交新文件的标题列.

例如:

example.csv

Color,Car,Make
Red,Kia,Spectra
Orange,Kia,Sportage
Green,Ford,Explorer
Black,Ford,F-150

结果:

Kia.csv

Red,Kia,Spectra
Orange,Kia,Sportage
___________________
Ford.csv

Green,Ford,Explorer
Black,Ford,F-150

我想要的输出:

Kia.csv

Color,Car,Make
Red,Kia,Spectra
Orange,Kia,Sportage
___________________
Ford.csv

Color,Car,Make
Green,Ford,Explorer
Black,Ford,F-150

为了try 将标题列传递给新文件,我try 了类似于awk -F'|' 'FNR==1{hdr=$0;next} {if (!seen[$1]++) print hdr>$2; print>$2}' example.csv的操作,但不幸的是,这没有达到预期的效果.

推荐答案

你就快到了.请你试试:

awk -F, '
    FNR==1 {header = $0; next}
    !seen[$2]++ {print header > $2".csv"}
    {print > $2".csv"}
' example.csv

Linux相关问答推荐

仅使用Find搜索32字符长的目录

从 MariaDB 连接到 Oracle 时出现错误消息libsqora.so.11.1:找不到文件

在 Linux 中屏蔽文件中的位 - 按位运算

使用来自 yocto build 而不是主机系统的 protoc

无法在嵌入式 Linux 中使用 libjpeg 以 RGB888 在 LCD(黑色)上显示 JPEG

使用 sed 命令仅打印正则表达式匹配

Google Cloud Ops Agent Mongo 集成错误 - AuthenticationFailed:SCRAM 身份验证失败,storedKey 不匹配

如何使用 shell 脚本将文本文件转换为 JSON 文件

Azure Nvidia 中的 apt-update 给出公钥错误

问题:Virtio rpmsg 总线 virtio0:收到的 msg 没有收件人 - 在 Yocto Hardknott - imx7d-pico

如何在 Linux 中获取 C/C++ 中的用户名?

anon 对 pmap 意味着什么?

Linux命令行如何接受没有pin的蓝牙设备配对

为什么我不能将 Unix Nohup 与 Bash For 循环一起使用?

kdevtmpfsi 使用整个 CPU

如何获取WiFi网络接口的MAC地址?

Linux AMD64 中如何使用 fs/gs 寄存器?

如何等待第一个命令完成?

如何在 Linux 中查看日志(log)文件并在查看时应用自定义过滤器?

如何在 UNIX 中将字符串转换为整数