Мой файл данных похож:
#cP2019 6 30 0 0 0.00000000 192 ORBIT IGS14 BHN ESOC
## 2060 0.00000000 900.00000000 58664 0.0000000000000
+ 54 G18G14G13G28G21G11G22G20G16G19G23G02G31G17G12G15G29
+ G07G05G25G01G30G24G27G06G09G03G26G08G10G32R10R12R13
+ R19R20R01R22R24R23R16R04R08R03R07R02R18R21R09R17R14
+ R11R05R15 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++ 7 4 4 5 5 4 5 5 5 4 4 5 4 4 5 4 5
++ 4 4 5 5 5 5 4 4 5 6 5 5 5 4 6 6 5
++ 6 6 6 5 5 6 6 5 5 6 5 6 5 5 5 5 6
++ 6 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
%c M cc GPS ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc
%c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc
%f 0.0000000 0.000000000 0.00000000000 0.000000000000000
%f 0.0000000 0.000000000 0.00000000000 0.000000000000000
%i 0 0 0 0 0 0 0 0 0
%i 0 0 0 0 0 0 0 0 0
/* CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
* 2019 6 30 0 0 0.00000000
....... data ......
....... data ......
....... data ......
* 2019 6 30 0 15 0.00000000
....... data ......
....... data ......
....... data ......
* 2019 6 30 0 30 0.00000000
....... data ......
....... data ......
....... data ......
and goes on like this ...
Я должен извлечь строки между первой и второй датой каждого файла данных. Я могу применить следующий код для извлечения этих строк следующим образом:
sed -n '/* 2019 6 30 0 0/,/* 2019 6 30 0 15 /p' esu20601_00.sp3 > extract_1
Но даты и местоположения данных отличаются для каждого файла. Таким образом, я должен извлечь строки между первым * 2019
и второй * 2019
для каждого файла. Как я могу сделать это с помощью кодов?
Могло несомненно быть более сложным, но с примитивными инструментами Python:
#!/usr/bin/env python3
import sys
# open/read file
f = open(sys.argv[1]).read()
# find first line, holding * 2019
first = f.find("* 2019")
# find second line, holding * 2019
nxt = f.find("* 2019", first + 1)
# print out text between the two
text = f[first:nxt].splitlines()[1:]
for l in text:
print(l)
findsection.py
Выполнение он:
python3 /path/to/findsection.py <datafile>
Вывод (от первого раздела):
....... data ......
....... data ......
....... data ......
, Конечно, Вы могли заставить его собрать данные от целого dir, записать в новый файл и т.д., и т.д.