Использование скрипта awk
:
NR == FNR { seq[++n] = $1; next }
{
header = $0
getline
for (i = 1; i <= n; ++i) {
if (match(seq[i], $0) > 0) {
print header
next
}
}
print header
print
}
Запуск:
$ awk -f script.awk file2 file1
1
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGTTTTTTTTT
2
3
4
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCCGTCCGTAG
Скрипт сначала считывает 2000 последовательностей из file2
в массив seq
,а затем читает заголовок из file1
, за которым следует последовательность из file1
(, используя getline
). Затем он проходит через массив seq
, чтобы найти последовательность, содержащую текущую последовательность из file1
. Если такая последовательность найдена, печатается заголовок, и скрипт переходит к следующей строке в file1
. В противном случае печатаются и заголовок, и последовательность.
Сценарий предполагает, что file1
содержит чередующиеся строки заголовка и строки последовательности и абсолютно не содержит многострочной последовательности -.
Ниже приведен тот же сценарий, но с использованием СУХОГО принципа («Не повторяйся»):
NR == FNR { seq[++n] = $1; next }
{
header = $0
getline
found = 0
for (i = 1; i <= n; ++i) {
if (match(seq[i], $0) > 0) {
found = 1
break
}
}
print header
if (!found) print
}
Судя по всему, патчи, заставляющие gdm3 завершать сеанс xserver, совершенно новые и практически нигде не производятся. Ошибка, которую я вижу, происходит даже в Fedora 32 (, если вы заставляете приветствующий использовать xorg, который не используется по умолчанию ).
см.:https://gitlab.gnome.org/GNOME/gdm/-/issues/222
Виртуальная машина использовала wayland/xwayland для приветствия. Это более легкое исправление.
Редактировать /etc/gdm3/custom.conf
закомментировать строку, заставляющую xorg. То есть отредактируйте файл, чтобы он выглядел как:
[daemon]
# Uncoment the line below to force the login screen to use Xorg
#WaylandEnable=false
потому что, когда приветствующий использует wayland/xwayland, даже для запуска сеанса входа в систему xorg, gdm3 завершает его сеанс. Таким образом, нет x-сервера, принадлежащего gdm -. Это экономит, вероятно, не менее 300 МБ резидентной оперативной памяти и в моем случае позволяет избежать утечки памяти.