GREP несколько шаблонов с различным контекстом

Вот ошибка:

dpkg: ошибка обработки архива /var/cache/apt/archives/libimage-magick-q8-perl_8%3a6.9.1-2_amd64.deb (--unpack): попытка перезаписать '/usr/lib/x86_64-linux-gnu/perl5/5.20/auto/Image/Magick/Magick.so', который также находится в пакете libimage-magick-q16-perl 8:6.8.9.9-5 dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)

dpkg отказывается устанавливать пакет, потому что другой пакет владеет файлом /usr/lib/x86_64-linux-gnu/perl5/5.20/auto/Image/Magick/Magick.

По умолчанию dpkg не будет перезаписывать файлы, принадлежащие другому пакету - а "право собственности" на файлы конкретных пакетов может меняться при переименовании пакетов или реструктуризации коллекции пакетов.

Вам нужно либо запустить apt-get с опцией -o Dpkg::Options::="--force-overwrite", как показано здесь:

apt-get -o Dpkg::Options::="--force-overwrite" ...

или вы можете сделать эту опцию постоянной, добавив ее в /etc/apt/apt.conf или файл в /etc/apt/apt.conf.d/, например так:

DPkg { Options {"--force-overwrite";} };

0
19.06.2018, 10:43
2 ответа

Специальное -решение с awk может быть примерно таким:

awk '/^header_/ {n=1+1} /^data_/ {n=1+2} n-- > 0; n == 0 {print "---"}' < file

nустанавливается для совпадающих строк и уменьшается для каждой строки. Строки печатаются, когда nположителен с разделителем после каждого блока. При указанных выше значениях будет напечатано header_строк плюс одна следующая строка и data_строк плюс две следующие строки.


Если блоки контекста могут перекрываться, новое значение nзаменит предыдущее значение. Чтобы этого не произошло, добавьте условия для защиты присваиваний:

awk '/^header_/ {if (n < 2) n=2} 
     /^data_/   {if (n < 5) n=5}
     n-- > 0; n == 0 {print "---"}' < file

Это должно лучше обрабатывать случаи, когда data_и header_расположены в последовательных строках.

2
28.01.2020, 02:31

Я пробовал использовать приведенную ниже команду sed. При тестировании все работало нормально, дайте мне знать, если возникнут какие-либо недоразумения

sed -n -e  '/header_/,+1p' -e '/^data_/,+2p' filename

выход

header_one
param1
data_one
data1
data2
header_two
param1
data_two
data1
data2
2
28.01.2020, 02:31

Теги

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