Немного позже, но я знаю ответ и то, что вы ищете for - это команда slackpkg
, используйте ее следующим образом:
# slackpkg install ap
slackpkg
- это официальный установщик пакетов для Slackware. Эта утилита должна быть настроена в основном так, чтобы указать зеркало, которое будет использоваться при установке и обновлении пакетов.
Но вам необходимо добавить этот пакет в минимальный набор для установки, он находится в серии ap
.
Поэтому я предлагаю следующую процедуру:
1) Начните установку и выберите минимальную настройку.
2) Дождитесь завершения
3) Войдите и смонтируйте загрузочный диск Slackware
# mount /dev/sr0 /media/cdrom
4) Установите пакет slackpkg
с помощью installpkg
(эта утилита входит в пакет pkgtools
, который принадлежит к серии a
)
# installpkg /media/cdrom/slackware/ap/slackpkg-2.82.1-noarch-3.txz
5) Отредактируйте файл / etc / slackpkg / mirrors
и раскомментируйте запись cdrom: // media / cdrom /
#----------------------------------------------------------------
# Local CD/DVD drive
#----------------------------------------------------------------
cdrom://media/cdrom/
#
#----------------------------------------------------------------
# Local Directory
6) запустите slackpkg update
, чтобы обновить источники установки
7) используйте slackpkg install ap
, чтобы выбрать, из каких пакетов устанавливать the ap
series
8) Выберите желаемые пакеты
9) Идите пообедать
На самом деле это всего лишь вариант "создать таблицу поиска из одного файла; использовать ее при обработке другого файла" с той особенностью, что ключ поиска нужно отделить от второго поля. . Вы можете сделать это в awk
, например:
awk '
BEGIN{OFS=FS="\t"}
NR==FNR {
a[$1]=$2; next
}
{
split($2,b,":");
if (b[1] in a) $2 = a[b[1]]":"b[2]
} 1' File_2 File_1
awk подход:
awk 'NR==FNR{a[$1]=$2;next}$2 in a{$2=a[$2]":"$3;$3=""}1' File_2 FS="[ |:]" File_1
Вывод:
522 Clostridium_tetani_E88:CTC00972 - 506 3.20E-138
522 Natrialba_magadii:Nmag_3027 - 561 4.70E-73
522 nml:Namu_3564 - 566 1.80E-146
Обратите внимание, что коды nml
и nla
не совпадают между двумя входными файлами
Это должно работать с sed
:
sed '/^[a-z]*[[:cntrl:]].*/{s/[[:cntrl:]]/###/;H;d;}
G
s/\([a-z]*\)\(:.*\n\)\1###\([^[:cntrl:]]*\)/\3\2/
P
d' file_2 file_1
Это принятие этого универсального решения. См. там объяснение того, как это работает.