Спасательная ценность второй строки

После запуска скрипта у меня есть следующие строки:


PyMOL(TM) Molecular Graphics System, Version 1.4.1. Copyright (c) Schrodinger, LLC. All Rights Reserved. Created by Warren L. DeLano, Ph.D. PyMOL is user-supported open-source software. Although some versions are freely available, PyMOL is not in the public domain. If PyMOL is helpful in your work or study, then please volunteer support for our ongoing efforts to create open and affordable scientific software by purchasing a PyMOL Maintenance and/or Support subscription. More information can be found at "http://www.pymol.org". Enter "help" for a list of commands. Enter "help <command-name>" for information on a specific command. Hit ESC anytime to toggle between text and graphics. Command mode. No graphics front end. Detected 8 CPU cores. Enabled multithreaded rendering. PyMOL>align MHC1, MHC2 Match: read scoring matrix. Match: assigning 385 x 384 pairwise scores. MatchAlign: aligning residues (385 vs 384)... ExecutiveAlign: 3810 atoms aligned. Executive: RMS = 0.000 (3810 to 3810 atoms) PyMOL>sele EP1, chain M Selector: selection "EP1" defined with 63 atoms. PyMOL>sele EP2, chain R Selector: selection "EP2" defined with 64 atoms. PyMOL>rms_cur EP1 and n. CA, EP2 and n. CA Executive: RMS = 7.457 (9 to 9 atoms) PyMOL: normal program termination. 

Мне нужно извлечь значение «7.457» из строки «Исполнительный: RMS = 7.457 (от 9 до 9 атомов)». Следует отметить, что значение «7.457», а также информация «от 9 до 9 атомов» будет варьироваться в разных раундах, поэтому я не могу использовать его в качестве шаблона. «Исполнительный: RMS» не является переменной, но повторяется несколько строк выше. По-видимому, у меня будет значение всегда во второй последней строке. Это можно использовать для извлечения значения, но я не знаю, как это сделать с помощью скрипта python или shell.

Кто-нибудь может мне помочь? Большое спасибо!

Кстати, это сценарий, над которым я работаю (это конкретная программа PyMol, извлекающая значения RMSD):

 ## RUNNING ## Importing PyMol files from pymol.cgo import * from pymol import cmd from pymol import stored # Loading MHC1 cmd.load ("MHC1.pdb") #Change chain C to chain M (MHC1 epitope) cmd.alter (('chain C'),'chain="M"') # Loading MHC2 cmd.load ("MHC2.pdb") #Change chain C to chain R (MHC2 epitope) cmd.alter (('chain C'),'chain="R"') ## Align MHC1 and MHC2 cmd.do ("align MHC1, MHC2") ## MHC1 epitope selection (EP1) cmd.do ("sele EP1, chain M") ## MHC2 epitope selection (EP2) cmd.do ("sele EP2, chain R") ## Remove chain names (this is required so 'rms_cur' will work properly) cmd.alter (("all"),'chain=""') ## Residues numbers aligned (this is required so 'rms_cur' will work properly) cmd.alter (("all"),'segi=""') ## RMSD Calculation between EP1 and EP2 cmd.do ("rms_cur EP1 and n. CA, EP2 and n. CA") 

2 Solutions collect form web for “Спасательная ценность второй строки”

Я не совсем понимаю, как вы получаете вывод, который вы показываете. Я предполагаю, что он создан по сценарию, который вы упомянули, и что вы можете просто передать его через что-то еще, чтобы разобрать его. Если это так, эти решения должны работать:

 your_script | tail -n 2 | awk '/RMS/{print $4}' 

tail -n 2 печатает последние две строки, а awk будет печатать четвертое поле любой строки, содержащей RMS , то есть значение, которое вы используете.

В качестве альтернативы:

 your_script | tail -n 2 | grep -oP '[.\d]+' | head -1 

Это будет grep для наборов чисел или . и использует head для печати первой.

Поскольку вы знаете, что хотите последнюю строку, содержащую RMS , вы также можете просто сделать:

 your_script | awk '/: RMS/{val=$4}END{print val}' 

Это будет проходить через каждую строку, и каждый раз, когда он найдет тот, который содержит : RMS , он сохранит 4-е поле как val . Блок END{} выполняется после того, как все строки были обработаны, поэтому в этой точке val будет последним найденным значением, которое вы хотите.

 script | sed -n '${x;p};h' 

Думаю, это должно сделать это. Он всегда будет печатать от второй до последней строки.

Если вы хотите только номер, который вы:

 script | sed -n '${x;s/.*= *//;s/ .*//p};h' 

Таким образом, большой H присоединяет к пространству удержания sed's содержимое текущего пространства шаблонов, в то время как мало h перезаписывает его. Поэтому, если вы переписываете пространство удержания для каждой строки, а на последней строке вы меняете пространство удержания с пространством шаблонов, то вы работаете со второй до последней строкой.

Это наилучшее возможное решение этой проблемы, которое я могу себе представить, потому что она использует наименьшее количество ресурсов, которые могут потребоваться. В любой момент у вас не будет больше двух строк в памяти.

  • Сценарий для удаления файлов, не соответствующих определенным именам файлов
  • Как скомпилировать Python 3.2 на NetBSD? Код ошибки 127
  • Работа в Cron не ведет себя так, как ожидалось
  • Как скопировать строки разных файлов и вставить столбцы?
  • Установка Anaconda на Chromebook
  • `man` для языков, отличных от C (например, python, R, javascript и т. д.)?
  • CUPS - проверить успешность печати (либо python, либо в системе)
  • Не удается использовать Python3 Package Installer
  • Как проверить и запустить скрипт, если он не запущен?
  • Hotmail не получает письма от скрипта, но работает с сервера
  • Кросс-компиляция Python
  • Компиляция Python 2.7.10 Ошибка
  • Interesting Posts

    Разделение файла на встроенные записи заголовков на два файла

    Гостевая ОС Ubuntu 12.04 нет сетевого подключения

    как установить более старую версию subversion в Linux Mint

    Я должен запустить ./odoo.py как root вместо того, чтобы просто запустить службу odoo

    emacsclient -t висит

    Что касается удаления первых 327 строк во всех файлах .dat в папке

    Как создать динамическое меню и сделать его пригодным для использования?

    Вернуть слово перед совпадающим словом, используя sed

    Какова цель модуля ядра dm_mirror aka dm-mirror?

    Бесконечное журналирование ошибок при голосовании: не удалось установить блокировку автозапуска

    Правильный синтаксис для символьной символической ссылки

    Linux не отвечает на сообщения ARP-запроса, если запрашиваемый IP-адрес связан с другим (отключенным) интерфейсом

    Как установить сценарий для запуска новой строки, добавляется в конец файла?

    восстановить пароль на удаленном сервере

    Dropbear сразу же отключает соединение на DD-WRT

    Linux и Unix - лучшая ОС в мире.