Я работаю с CSV-файлами, они извлекают из базы данных каталоги c, мне нужно расположить их в формате USGS, чтобы начать другие шаги.
Мой формат входных данных:
DatesT,Latitude,Longitude,Magnitude,Depth,Catalog
1909,7,23,170000,-17.430,-66.349,5.1,0,PRE-GEM-ISC
1913,12,14,024500,-17.780,-63.170,5.6,0,PRE-GEM-ISC
Формат ввода USGS:
DatesT,Latitude,Longitude,Magnitude,Depth,Catalog
1909-7-23T17:00:00,-17.430,-66.349,5.1,0,PRE-GEM-ISC
1913-12-14T02:45:00,-17.780,-63.170,5.6,0,PRE-GEM-ISC
Чтобы «преобразовать» мой ввод в формат USGS, я сделал следующие шаги:
archi='catalog.txt'
sed 's/,/-/1' $archi > temp1.dat # to change "," to "-"
sed 's/,/-/1' temp1.dat > temp2.dat # same as above
sed 's/,/T/1' temp2.dat > temp3.dat # To add T between date and time
sed -i.bak "1 s/^.*$/DatesT,Latitude,Longitude,Magnitude,Depth,Catalog/" temp3.dat #to preserve the header.
У меня есть следующий вывод:
DatesT,Latitude,Longitude,Magnitude,Depth,Catalog
1909-7-23T170000,-17.430,-66.349,5.1,0,PRE-GEM-ISC
1913-12-14T024500,-17.780,-63.170,5.6,0,PRE-GEM-ISC
Я попытался реализовать следующую команду:
sed 's/.\{13\}/&: /g' temp3.dat > temp4.dat
К сожалению, она не сработала, как я думал, потому что у нее не было одинакового места для всех строк.
Есть ли у вас идеи улучшить мой код.
Будьте в безопасности
Тонино