Вы можете сделать это с помощью yum
, создав файл репозитория ".repo" для вашей коллекции и запустив yum
, временно включающий этот репозиторий при отключении других репозиториев. Вы можете сделать это проще, создав сценарий оболочки для вызова yum
при отключении обычных репозиториев. Используйте yum repolist
, чтобы получить имена для отключения.
Что-то вроде
#!/bin/sh
yum --disablerepo=foo "$@"
(вы можете перечислить более одной опции --disablerepo
). В качестве альтернативы, вы можете отключить все репозитории и включить только те, которые вам нужны, например,
#!/bin/sh
yum --disable-repo='*' --enable-repo=myrepo "$@"
Дальнейшее чтение:
--enablerepo=
repoidglob
Включает определенные репозитории по id или glob, которые были отключены в конфигурационном файле с помощью опции отключены в конфигурационном файле с помощью опции enabled=0. Опция конфигурации: enabled
--disablerepo=
repoidglob
Отключает определенные репозитории по id или glob. Опция конфигурации: enabled
Если вы имеете в виду, что замена не должна выполняться, если имеется более 8 соседних (TAB)
s, вы можете сделать:
sed '
s/_/_u/g; # escape _
s/|/_p/g; # escape |
s/(TAB)/|/g; # use a single character in place of (TAB)
s/.*/<&>/; # add leading and trailing non-| character
s/\([^|]\)|\{2,8\}\([^|]\)/\1|\2/; # replace up to 8 | provided
# they are not preceded nor followed
# by |
s/.\(.*\)./\1/; # undo wrapping
s/|/(TAB)/g; # undo replacement
s/_p/|/g;s/_u/_/g; # undo escaping'
Если ваш sed
(например, ssed
) поддерживает регулярные выражения, подобные Perl, вы можете использовать операторы просмотра:
ssed -R 's/(?<!\(TAB\))(\(TAB\)){2,8}(?!\(TAB\))/(TAB)/g'
Или использовать perl
напрямую:
perl -lpe 's/(?<!\(TAB\))(\(TAB\)){2,8}(?!\(TAB\))/(TAB)/g'
AT&T (ast-open) sed
], с параметром -A
/ -X
поддерживается разновидность расширенных регулярных выражений, которые они называют дополненными , которые имеют оператор отрицания ( x!
) и оператор конъюнкции ( x & y
). Здесь (. {5} & (\ (TAB \))!)
соответствует последовательности из 5 символов, которая является , а не (TAB)
. Итак, с помощью этого sed
вы можете сделать что-то вроде:
sed -A '
:1
s/(^.{0,4}|.{5}&(\(TAB\))!)(\(TAB\)){2,8}(.{0,4}$|.{5}&(\(TAB\))!)/\1(TAB)\4/
t1'
Я не уверен, что понимаю, как должно применяться предложение «максимум 8», но наивный подход будет примерно таким:
sed 's/\((TAB)\)\{2,8\}/(TAB)/g'