Что означает 10 в библиотеке libgmp10?

Чтобы извлечь строки из data.txt с генами, перечисленными в genelist.txt :

grep -w -F -f genelist.txt data.txt > newdata.txt

grep :

  • -w указывает grep соответствовать только целым словам (т. е. ABC123 также не будет соответствовать ABC1234 ).
  • -F искать фиксированные строки (простой текст), а не регулярные выражения
  • -f genelist.txt читать шаблоны поиска из файла

Если вам нужен заголовок (Пример 1, Пример 2 и т. Д.):

grep -w -F -f genelist.txt -e Sample data.txt > newdata.txt
  • -e Sample также ищите "Sample"

Чтобы найти строки в genelist.txt , которых нет в newdata.txt :

grep -v -w -F -f <(sed -E -e 's/(\t|  +).*//' newdata.txt) genelist.txt
  • -v инвертировать поиск, печатать несовпадающие строки.

Остальные параметры grep такие же, но вместо использования файла с параметром -f используется так называемая подстановка процесса (см. также ), что позволяет использовать команду вместо фактического файла. Какой бы вывод ни создавала команда, рассматривается как содержимое «файла».

В этом случае мы используем команду sed -E -e 's / (\ t | +). * //' newdata.txt , которая выводит каждую строку newdata.txt после первого удаления всего либо из первого символа TAB, либо из первой пары пробелов, которые он видит. Другими словами, первое поле (например, «Ген А»). Мне пришлось использовать TAB или двойной пробел, потому что а) я не был уверен, были ли ваши данные разделены пробелами или TAB, и б) первые поля в вашем примере содержали пробелы.

Использованные параметры sed :

  • -E использовать расширенные регулярные выражения, поэтому мы можем использовать простые (, ) и + , которые более читабельны, чем необходимость экранировать их с помощью \ как \ (, \) , \ + .
  • -e 's / (\ t | +).* // ' указывает сценарий sed для применения к входу (newdata.txt)

Выполнение этой команды в вашем примере data.txt приведет к следующему результату:

$ sed -E -e 's/(\t|  +).*//' data.txt

Gene A
Gene B
Gene C
Gene D

В любом случае, вывод этой команды sed используется как список шаблонов поиска командой grep .

3
24.12.2016, 23:15
2 ответа

Политика Debian требует изменения имени пакета при изменении SONAME (как другие правильно указали на связь с номерами версий). Номер интерфейса 10 в выпусках 5.0.x , поэтому рекомендуется сделать его частью имени пакета.

Обратите внимание, что версия 5.1.0 имеет age = 1 , что означает, что он может «предоставлять» оба номера интерфейса 10 и 11 . Не уверен, действительно ли Debian это делает.

0
27.01.2020, 21:18

Вы имеете в виду версию libtool , которая обычно не связана с версией выпуска библиотеки.

Беглый взгляд на источники покажет вам, что версии установлены в Makefile.am , с блоком комментариев перед значениями, дающими сводку истории.

Вот фрагмент, в котором вы увидите номера пакета Debian (информация о версии libmp находится в последнем столбце):

#       release   libgmp  libgmpxx libmp 
...
#        5.0.1   10:1:0    6:1:2   4:21:1 
#        5.0.2   10:2:0    6:2:2   4:22:1 
#        5.0.3   10:3:0    6:3:2   4:23:1 
#        5.0.4   10:4:0    6:4:2   4:24:1 
#        5.0.5   10:5:0    6:5:2   4:25:1 
#        5.1.0   11:0:1    7:0:3     - 

и (текущая)

#        6.1.2   13:2:3    9:2:5     - 

и

# We interpret "implementation changed" in item "1." above as meaning any 
# release, ie. the REVISION is incremented every time (if nothing else). 
# Even if we thought the code generated will be identical on all systems, 
# it's still good to get the shared library filename (like 
# libgmpxx.so.3.0.4) incrementing, to make it clear which GMP it's from. 

LIBGMP_LT_CURRENT    = 13
LIBGMP_LT_REVISION   = 2
LIBGMP_LT_AGE        = 3

LIBGMPXX_LT_CURRENT  = 9
LIBGMPXX_LT_REVISION = 2
LIBGMPXX_LT_AGE      = 5
4
27.01.2020, 21:18

Теги

Похожие вопросы