Мое предложение на этом было, сделайте резервное копирование целой корневой фс (включая/usr/local), затем повторное разделение, смонтируйте весь раздел и извлеките все.
После этого все Ваши файлы стояли бы, и Ваш диск был повторно разделен.
При простом резервном копировании/usr/local существует риск, что, после того как системные библиотеки обновляются, те, которые программному обеспечению (нестатические), возможно, понадобилось бы пересоединение.
$ HOME/.vnc/xstartup
предназначен для рабочего стола X, работающего на сервере, а не для самого сервера. Необходимо создать файл $ HOME/.vncrc
с именем
$geometry = "1400x850";
. У вас есть некоторая документация в:
/usr/share/doc/vnc4server/examples/vnc.conf.gz
-121--102930- «команда rpm просто добавляет vlc rpm к yum repo»...
Закрыть. Я думаю, что пакет, установленный с помощью rpm
, добавляет репозиторий RPM Fusion , после чего yum
может устанавливать пакеты из этого репозитория. Очевидно, что первый пакет не может быть установлен через yum
, так как он отсутствует в репозиториях, настроенных для yum
. Поэтому его нужно было вручную загрузить и установить.
vlc
доступен в репозитории RPM Fusion (но не в официальных репозитариях для Fedora, я полагаю), поэтому, если вы не добавите этот репозиторий, yum list
не будет показывать ничего для vlc
.
sed
: sed '$!N;s/"[^"]*"\n<[^>]*>/other characters /;P;D'
sed -e :n -e '$!N;s/"[^"]*"\n<[^>]*>/other characters /;tn'
sed -e :n -e '$!N;/"$/{$!bn' -e '};s/"[^"]*"\n<[^>]*>/other characters /g'
Все три команды строятся на основе базовой команды s///
ubstitation:
s/"[^"]*"\n<[^>]*>/other characters /
Все они также стараются позаботиться о своей работе с последней строкой, так как sed
имеют тенденцию отличаться на выходе в краевых случаях. Это значение $!
, который является адресом, соответствующим каждой строке, которая является !
не последний $
.
Все они также используют команду N
ext для добавления следующей входной строки в пространство шаблона после символа \n
ewline. Любой, кто был sed
inging в течение некоторого времени научится полагаться на символ \n
ewline - потому что единственный способ получить его - явно поместить его туда.
Все трое пытаются прочесть как можно меньше входных данных перед выполнением действия - sed
действует, как только он может и не должен читать во всем входном файле, прежде чем сделать это.
Хотя они делают все N
, все они отличаются по методам рекурсии.
Первая команда использует очень простой цикл N; P; D
. Эти три команды встроены в любой POSIX-совместимый sed
и отлично дополняют друг друга.
N
- как уже упоминалось, добавляет N
ext входную строку к пространству шаблона после вставленного \n
разделителя ewline. P
- подобный p
; он P
печатает шаблон-пробел - но только до первого встречающегося символа \n
ewline. Поэтому, учитывая следующие входные данные/команды:
printf% s\\n one two | sed '$! N; P; d'
sed
P
печатает только one . Однако с...
D
- подобный d
; он D
удаляет узор-пространство и начинает другой линейный цикл. В отличие от d
, D
удаляет только до первого появления \n
ewline в образец -пространство. Если после символа \n
ewline в поле pattern-space больше, sed
начинает следующий цикл строки с оставшимся. Если d
в предыдущем примере были заменены на D
, например, sed
будет P
печатать как один , так и два . Эта команда рекурсивна только для строк, которые не соответствуют инструкции s///
ubstitution. Поскольку функция s///
удаляет \n
ewline, добавленную с помощью N
, ничего не остается, когда sed
D
удаляет узор-пространство.
Тесты могут быть выполнены для выборочного применения P
и/или D
, но есть другие команды, которые лучше соответствуют этой стратегии. Поскольку рекурсия реализуется для обработки последовательных строк, которые соответствуют только части правила замены, последовательные последовательности строк, соответствующих обоим концам s///
ubsitation, работают плохо.:
Учитывая этот ввод:
first "line"
<second>"line"
<second>"line"
<second>line and so on
... он печатает...
first other characters "line"
<second>other characters line and so on
Однако он справляется с
first "line"
second "line"
<second>line
... просто прекрасно.
Эта команда очень похожа на третью. Оба используют : b
ranch/ t
est label (как также показано в ответе Joeseph R. здесь ) и возвращают его к определенным условиям.
-e: n -e
- переносимые sed
скрипты будут разделять определение метки :
либо \n
ewline, либо новой встроенной -e
инструкцией execution.
: n
- определяет метку с именем n
. Его можно вернуть в любое время с помощью bn
или tn
. tn
- команда t
est возвращается к указанной метке (или, если отсутствует, выходит из сценария текущего цикла строки) , если какая-либо s///
ubsitation с момента определения метки или с момента последнего вызова t
ests успешно выполнена. В этой команде происходит рекурсия для соответствующих строк. Если sed
успешно заменяет образец другими символами , sed
возвращается к метке : n
и пытается повторить попытку. Если функция s///
не выполняется sed
autoprints pattern-space и начинается следующий цикл строки.
Это имеет тенденцию обрабатывать последовательные последовательности лучше. Если последняя не удалась, это приводит к печати:
first other characters other characters other characters line and so on
Как уже упоминалось, логика здесь очень похожа на последнюю, но тест более явный.
/" $/bn
- это тест sed
. Поскольку команда b
ranch является функцией этого адреса, команда sed
возвращает только b
ranch к :n
после добавления \n
ewline, и пробел шаблона по-прежнему заканчивается двойной кавычкой "
. Между N
и b
сделано как можно меньше - в этом пути sed
может очень быстро собрать ровно столько входных данных, сколько необходимо, чтобы убедиться, что следующая строка не может соответствовать вашему правилу. Функция s///
отличается здесь тем, что в ней используется флаг g
lobal - и поэтому она будет выполнять все необходимые замены одновременно. При идентичном вводе эта команда выводится идентично последней.
Вот вариант ответа glenn, который будет работать, если у вас несколько последовательных вхождений (работает только с GNU sed
):
sed ':x /"line"/N;s/"line"\n<second>/other characters/;/"line"/bx' your_file
:x
- это просто метка для ветвления. В основном, это проверяет строку после замены, и если она всё ещё совпадает с "строкой"
, то она ответвляется обратно на метку :x
(это то, что делает bx
) и добавляет в буфер ещё одну строку и начинает её обрабатывать.
Прочитайте весь файл и сделать глобальную замену:
sed -n 'H; ${x; s/"line"\n<second>/other characters /g; p}' <<END
first "line"
<second> line followed by "line"
<second> and last
END
first other characters line followed by other characters and last
Ну, я могу придумать пару простых способов, но ни один из них не включает в себя grep
(который все равно не делает замен) или sed
.
Perl
Для замены каждого появления "строки"\n<секунда>
на другие символы
, используйте:
$ perl -00pe 's/"строка"\n<секунда>/другие символы /g' файла.
первая строка из других символов и так далее
Или, чтобы обработать несколько последовательных вхождений "строки"\n<секунда>
как одно и заменить их все одним другим символом
, используйте:
perl -00pe 's/(?: "строка"\n<секунда>)+/другими символами /g' файла.
Пример:
$ кошачий файл
первая "строчка"
<секунда>"линия"
<секунда>"линия"
<второй> строчкой и так далее
$ perl -00pe 's/(?: "строка"\n<секунда>)+/другие символы /g' файл.
первая строка из других символов и так далее
-00
заставляет Perl читать файл в "абзацевом режиме", что означает, что "строки" определяются с помощью \n\n
, а не с помощью \n
, по сути, каждый абзац рассматривается как строка. Таким образом, подстановка соответствует новой строке.
awk
$ awk -v RS="\n\n" -v ORS=" '{
sub(/"строка" \n<секунда>/, "другие символы", $0)
Печать;
файл
первая строка из других символов и так далее
Та же самая основная идея, мы установили разделитель записей (RS
) на \n\n
, чтобы стереть весь файл, затем разделитель выходных записей ни на что (в противном случае будет напечатана дополнительная новая строка), а затем использовали функцию sub()
, чтобы сделать замену.