请参阅下面的数据示例。我希望将Lat和Long添加到以下行的末尾,直到到达下一个lat和long,然后执行相同操作。这些lat和long值将通过文件更改。
当前数据
2010 02 15 19 29 2 0 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 29 2 1 1316.1 304 18.2 -9.5 -6.6
2010 02 15 19 29 2 2 1300.1 202 2.2 1.3 -1.2
2010 02 15 19 29 2 3 1284.1 188 5.2 1.4 -0.4
2010 02 15 19 49 2 0 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 1 1316.1 277 9.5 -8.7 -8.4
2010 02 15 19 49 2 2 1300.1 101 1.0 -1.4 -0.3
2010 02 15 19 49 2 3 1284.1 195 2.8 -2.0 0.9
2010 02 15 20 14 2 0 LATITUDE: 37.21 LONGITUDE: 90.27
2010 02 15 20 14 2 1 1316.6 285 7.0 -1.2 -6.7
2010 02 15 20 14 2 2 1300.6 46 2.8 2.1 -1.5
2010 02 15 20 14 2 3 1284.6 194 6.2 -1.8 -0.4
必填数据
2010 02 15 19 29 2 0 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 29 2 1 1316.1 304 18.2 -9.5 -6.6 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 29 2 2 1300.1 202 2.2 1.3 -1.2 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 29 2 3 1284.1 188 5.2 1.4 -0.4 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 0 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 1 1316.1 277 9.5 -8.7 -8.4 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 2 1300.1 101 1.0 -1.4 -0.3 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 3 1284.1 195 2.8 -2.0 0.9 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 20 14 2 0 LATITUDE: 37.21 LONGITUDE: 90.27
2010 02 15 20 14 2 1 1316.6 285 7.0 -1.2 -6.7 LATITUDE: 37.21 LONGITUDE: 90.27
2010 02 15 20 14 2 2 1300.6 46 2.8 2.1 -1.5 LATITUDE: 37.21 LONGITUDE: 90.27
2010 02 15 20 14 2 3 1284.6 194 6.2 -1.8 -0.4 LATITUDE: 37.21 LONGITUDE: 90.27
答案 0 :(得分:2)
使用awk
:
awk '/LATITUDE/{v=""; for(i=8; i<=NF; i++)v=v" "$i; print; next} {print $0, v}' File
每当遇到模式LATITUDE
时,将行的一部分(从LATITUDE
到行尾)复制到变量v
。对于包含LATITUDE
的行,按原样打印行,对于其他行,打印行,然后打印以前保存的变量v
。
<强>输出强>
AMD$ awk '/LATITUDE/{v=""; for(i=8; i<=NF; i++)v=v" "$i; print; next} {print $0, v}' File
2010 02 15 19 29 2 0 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 29 2 1 1316.1 304 18.2 -9.5 -6.6 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 29 2 2 1300.1 202 2.2 1.3 -1.2 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 29 2 3 1284.1 188 5.2 1.4 -0.4 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 0 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 1 1316.1 277 9.5 -8.7 -8.4 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 2 1300.1 101 1.0 -1.4 -0.3 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 19 49 2 3 1284.1 195 2.8 -2.0 0.9 LATITUDE: 37.19 LONGITUDE: 90.27
2010 02 15 20 14 2 0 LATITUDE: 37.21 LONGITUDE: 90.27
2010 02 15 20 14 2 1 1316.6 285 7.0 -1.2 -6.7 LATITUDE: 37.21 LONGITUDE: 90.27
2010 02 15 20 14 2 2 1300.6 46 2.8 2.1 -1.5 LATITUDE: 37.21 LONGITUDE: 90.27
2010 02 15 20 14 2 3 1284.6 194 6.2 -1.8 -0.4 LATITUDE: 37.21 LONGITUDE: 90.27
答案 1 :(得分:0)
import sys
import re
f1 = open('20151118b.dat', 'r')
lat = ""
while True:
line = f1.readline()
if len(line) == 0: break
line = line.rstrip()
match = re.search('(LATITUDE:.*)$', line)
if match:
# save the LATITUDE, and use it later
lat = match.group(1)
print('{}'.format(line))
continue
print('{} {}'.format(line, lat))