2014-11-04 3 views
0

Все,разбор нерегулярного файла CSV с двумя разделителями в Баше

Я ищу, чтобы разобрать файл CSV с помощью следующей строки

00000000-0000-0265-2510-017132647704,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,1,11/1/2014 7:29:02 AM,23435830,11179745,868,360655,69844,64637,43755,,,122.111.9.107,36,28389,-1,11677,3166,,0,11,,Apple iPad,,-1,-1,MM_CLD_Standard_Agency_43755_Daily_141101_00.csv 

Я необходимая для разбора файла с помощью два разделителей

"," & "_" 

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

awk -F "," 'BEGIN {OFS=","} {$23="";print $4,$3,$2,$6,FILENAME}' $i|tail -n +2|awk -F ",|_" 'BEGIN {OFS=","} {print $1,$2,$3,$4,$10}' 

Нужный результат будет как

11/1/2014 7:29:02 AM,1,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,11179745,141101 

Большое спасибо,

+0

Что ваш ожидаемый результат? –

+3

Не разделяйте их через 'FS'. Разделите на ',' через 'FS' и вручную используйте' split' для двух полей, которые тоже нужны. –

+0

Как настало время '7: 29: 54'? –

ответ

1
awk -F, -v OFS=, '{n=split($NF, a, /_/); print $4, $3, $2, $6, a[n-1]}' <<END 
x,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,1,11/1/2014 7:29:02 AM,y,11179745,z,...,MM_CLD_Standard_Agency_43755_Daily_141101_00.csv 
END 
11/1/2014 7:29:02 AM,1,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,11179745,141101 
+0

Спасибо тонну! Оно работает. –

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