使用grep提取行内数据

要从类似文本中提取其中的经纬度数据:

u’city’: u”, u’lat’: u’53.54022′, u’lng’: u’28.04696′, u’id’: u’8037500000000000000′}”,,,[],0,0,57,80375,8037500000000000000,Детский сад №99,0,23.8435327,303,0,校园生活,,”http://maps.google.cn/maps/api/staticmap?center=53.6470467,23.8435327&zoom=15&size=120×120&maptype=roadmap&markers=53.6470467,23.8435327&sensor=true”,http://ww3.sinaimg.cn/large/4e704b16jw1exkskwur0bj205k05kt8v.jpg,,0,0,,,53.6470467,0,B2094457D66AA5FA4199,http://u1.sinaimg.cn/upload/lbs/poi/icon/88/57.png,887,0,57,80375,,0,8037500000000000000,白俄罗

一开始是尝试使用csvquote,后来发现部分类型数据存在问题,于是尝试使用sed提取文本,但试验后发现grep提取更为简单:

grep -Eo ‘markers=([0-9.,-]+)’

最终组合为:

cat hotpoi-tmp.csv | grep -Eo 'markers=([0-9.,-]+)' | awk -F= '{print $2}' | awk -F, '{printf "%.2f,%.2f\n",$2,$1}' | sort -t, -k2,2n -k1,1n | uniq


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注