Разделить CSV-файл на основе столбца из командной строки - PullRequest
0 голосов
/ 24 мая 2018

У меня есть некоторые данные в файле в виде csv вида:

ID,DATE,EARNING
1,12 May 2018,5
1,13 May 2018,15
2,12 May 2018,25

Я хочу разбить это на несколько файлов, так что file_1_May_report содержит:

ID,DATE,EARNING
1,12 May 2018,5
1,13 May 2018,15

и другой файл file_2_May_report, который содержит:

ID,DATE,EARNING
2,12 May 2018,25

Я пытался:

awk -F, '{print >> $1}' input.csv 

Однако я получаю только один файл 1 только с одной записью, которая является последней записью во входном файле,Как заставить его разбить на несколько файлов по идентификатору?

1 Ответ

0 голосов
/ 24 мая 2018

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

awk -F, 'NR==1{hdr=$0; next} !seen[$1]++{fn="file_" $1 "_May_report"; print hdr > fn} {print > fn}' input.csv

или в более читаемом формате:

awk -F, 'NR == 1 {
   hdr = $0
   next
}
!seen[$1]++ {
   fn = "file_" $1 "_May_report"
   print hdr > fn
}
{
   print > fn
}' input.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...