Linux - 根据条件拆分CSV

时间:2012-01-11 12:41:16

标签: 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中做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用awk

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