Вот ex
версия... установите переменную оболочки x
в число, указывающее, какое вхождение нужно изменить (, например. с x=2
команда изменит второе вхождение шаблона )...
Этот обновляет входной файл в -месте:
ex +'/#\(\s*Require all granted\)/|1' +"norm ${x}n" +'s// \1/|wq' file
Вот вариант конвейера, который не изменяет файл, но выводит измененную версию на стандартный вывод:
cat file | ex +'/#\(\s*Require all granted\)/|1' +"norm ${x}n" +'s// \1/' +'%p|q!' /dev/stdin
Детали:
Когда он не запускается в интерактивном режиме, ex
по существу является командной строкой -режимом -, ориентированной на пакетную версию vim
. Так что многое из этого должно быть знакомо vim
пользователям...
/#\(\s*Require all granted\)/|1
-найдите шаблон, затем перейдите к строке 1, чтобы «сбросить» norm ${x}n
-перейти к n
расширенному вхождению шаблона x
раз s// \1/|wq
-выполнить замену только в текущей строке, затем написать -quit Попробуйте использовать флаг --source
для reposync
, чтобы также загрузить .src.rpm
файлы:
reposync --gpgcheck -l --repoid=base-source --download_path=/mnt/extra --source