2017-01-18 4 views
1

У меня есть много файлов csv, в которых мне нужно манипулировать первым полем, которое содержит дату, а затем печатать остальную часть строки. Файлы имеют переменную длину поля.манипулировать первым полем, а затем печатать остальную часть строки для файлов csv с помощью awk

Мой образец линии

"11.07.2016 00:00:00",DON1SOE02,PAPN,PAPN,OPEN1000,918945, 

Я попытался код ниже

awk -F"," '{print "\""substr($1,08,4)"-"substr($1,5,2)"-"substr($1,2,2)substr(‌​$1,12,9)"\","$0""}' file.csv  

Результатом этого является

"2016-07-11 00:00:00","11.07.2016 00:00:00",DON1SOE02,PAPN,PAPN,OPEN1000,918945, 

Есть ли способ, чтобы избежать печати немодифицированного даты поле, т.е. «11.07.2016 00:00:00»

решения ниже есть способ, чтобы пропустить первый столбец, но я хотел бы изменить первый столбец затем распечатать модификацию, а затем пропустить печати немодифицированного первого столбец

Using awk to print all columns from the nth to the last

ответ

3

Вы должны дать новое значение для ваших первое поле: awk '{$1="..."}1. В противном случае вся строка $0 останется без изменений:

awk -F, -v OFS=, '{$1="\""substr($1,8,4)"-"substr($1,5,2)"-"substr($1,2,2)""substr($1,12,9)"\""}1' file.csv 
+1

@fedorqui: это действительно более ясно. Благодарю. –

+0

Спасибо за отличное решение. –

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