Linux - 根据条件分割CSV

标签 linux ubuntu split conditional-statements

我有一个包含以下记录的大型 CSV 文件:

60,1572236,3,58394247,\N,\N,\N,1925720,\N,2011-11-25 12:55:53,2011-11-25 12:55:53
61,2875109,4,58394209,1234,\N,4025175,\N,\N,2011-11-25 12:55:53,2011-11-25 12:55:53
62,2875109,4,58394209,\N,\N,\N,9860904,\N,2011-11-25 12:55:53,2011-11-25 12:55:53
63,2875109,5,58394209,8756,\N,\N,8615157,\N,2011-11-25 12:55:53,2011-11-25 12:55:53
64,2686696,3,58394211,\N,\N,59512,\N,\N,2011-11-25 12:55:53,2011-11-25 12:55:53
65,2686696,3,58394211,\N,\N,4025893,\N,\N,2011-11-25 12:55:53,2011-11-25 12:55:53

我想将文件拆分为2个文件,拆分的条件是第5列中的值,一个文件将获取该列中没有值的行(\N),而该列中具有值的列将转到另一个文件。

在上面的示例中:第 2,4 行将转到一个文件,其余行将转到另一个文件。

有什么想法如何在 Linux 中做到这一点吗?

最佳答案

您可以使用awk:

$ awk -F, '$5=="\\N"{print >"file1.csv"; next}; {print >"file2.csv"}' data.csv
  • file1.csv 将包含 \N
  • file2.csv 将包含其他内容

关于Linux - 根据条件分割CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8819447/

相关文章:

mysql - SQL中的单行UPDATE查询需要3秒以上

c++ - 如何将这些字符串拆分成一个数组

Python根据条件拆分字符串

linux - 如何获取已删除分区中inode在 block 设备中的偏移量

linux - 为什么 chronyc makestep 不能立即同步时间?

linux - 为什么需要将#!/bin/bash 放在脚本文件的开头?

ubuntu - 在 omnet++ 中构建 INET 时出错

ubuntu - 在 Ubuntu 上进行 whois 通配符搜索

javascript - 如何使用 Jquery 分割动态列表取决于多个元素?

linux - 部署失败,因为应用程序规范文件指定了不受支持的操作系统