Linux - Split CSV в соответствии с условием - PullRequest
0 голосов
/ 11 января 2012

У меня большой 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 голосов
/ 11 января 2012

Вы можете использовать awk:

$ awk -F, '$5=="\\N"{print >"file1.csv"; next}; {print >"file2.csv"}' data.csv
  • file1.csv будет содержать \N
  • file2.csv будет содержать другие
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...