2016-04-15 6 views
0

У меня есть файл csv, который содержит 89 столбцов и содержит несколько дат данных. Столбец даты - 59-й столбец. Формат даты: mm/dd/yy. Я бы хотел создать файл с mmddyyyy.csv, поэтому каждый файл будет содержать только одну дату данных.Сплит файл по дате значение столбца

До сих пор мой подход

  1. Получить все различные даты файлов
  2. Для каждой отдельной даты

    grep [date value] file > mmddyyyy.csv 
    

Единственным недостатком вышеуказанного решения является то, что если [date value] существует где угодно в строке, он будет поднят, и я, возможно, в конечном итоге сделаю одну запись в двух или более файлах.

Я знаю, что для одного значения (строка/число) AWK может сделать это прямо вперед, как

awk -F"\t" '{print >> ($14".csv");}' $1 
+1

Редактировать свой вопрос, чтобы включить [mcve] –

ответ

1

Похоже, все, что вам нужно:

awk -F, '{split($59,t,"/"); print > (t[1] t[2] "20" t[3] ".csv")}' file 

, но без ввода пробы и ожидалось выход - это предположение. Если вы не используете GNU awk, вам, возможно, нужно будет добавить close(), чтобы избежать одновременного открытия слишком большого количества файлов.

+0

Спасибо Ed, Это точно решило мою проблему –

+0

Добро пожаловать. См. [Что делать, если кто-то отвечает на мой вопрос?] (Http://stackoverflow.com/help/someone-answers) –

Смежные вопросы