【发布时间】:2020-07-19 03:39:46
【问题描述】:
我正在处理 csv 文件,它们是来自数据库的地震目录,我需要像 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
不幸的是,它并没有像我想象的那样工作,因为所有行的位置都不相同。
你有什么想法可以改进我的代码吗?
【问题讨论】:
-
您的实际文件是否有这些标题行?
-
@Shawn,是的,他们有这些标题