Я хотел бы извлечь из текста:Удалите все строки между рисунком
CHEXA* 99001088 99001001 99001143 99001179*00072A1
*00072A1 99001047 99001104 99001144 99001180*00072A2
*00072A2 99001048 99001105
RBE3* 99001089 99001001 123*00072A5
*00072A50.11263443595303 123 6001515.041507658257159*00072A6
*00072A6 60016620.61808377914687 123 6001542
CHEXA* 99001086 99001001 99001128 99001095*0007299
*0007299 99001081 99001171 *000729B
*000729B
эта часть:
RBE3* 99001089 99001001 123*00072A5
*00072A50.11263443595303 123 6001515.041507658257159*00072A6
*00072A6 60016620.61808377914687 123 6001542
поместить его в файл и удалить его из исходного файла, который будет выглядеть так далее:
CHEXA* 99001088 99001001 99001143 99001179*00072A1
*00072A1 99001047 99001104 99001144 99001180*00072A2
*00072A2 99001048 99001105
CHEXA* 99001086 99001001 99001128 99001095*0007299
*0007299 99001081 99001171 *000729B
*000729B
То, что я попытался было:
sed '/RBE3\*/,/\*/d'
, но, к сожалению, он остановится после первого появления . Но цель состоит в том, чтобы удалить все строки после выполнения RBE3, который начинается с *, и этот будет удалять только одну строку. Спасибо
Эта работа отлично подходит для удаления линий. Не могли бы вы также добавить часть для сохранения удаленных строк в новом файле.Спасибо – Drago
Легко понять, как писать удаленные строки: с открытым (in_file) как infile, open (out_file, 'w') в качестве outfile, open (out_rbe3, 'w') в качестве outfile1: ' для линии в INFILE: '' если line.startswith ("RBE3"): '' держать = false' 'Элиф не line.startswith ("*"):' ' держать = true' ' если держать: ' ' outfile.write (строка) ' ' else: ' ' outfile1.write (строка) ' – Drago
@Drago: Я отредактировал свое сообщение, чтобы вы могли сохранить данные RBE3. – inspectorG4dget