Предполагая, что запись начинается, когда в первом столбце есть текст, вы можете изменить эти три записи с помощью
awk '/^[A-Z]/ { substitute = ($1 ~ /^((SAP|GOLD)_PROD|EVENTS_SAP)$/) }
substitute { sub(/sape-scan/, "sapi-scan") }1' tnsnames.ora >tnsnames.new
Awk обрабатывает каждую строку из входной строки по сценарию, т.е. текст в одинарных кавычках представляет собой небольшую программу, которая применяется к каждой строке в вашем файле.
В этом скрипте переменная substitute
получает логическое значение, указывающее, соответствует ли строка заголовка регулярному выражению. Если логическое значение истинно, мы выполняем замену в каждой строке, пока не увидим другую строку заголовка, и значение логического значения снова оценивается и, возможно, обновляется.Одинокий 1
заставляет печатать каждую строку.
Результат помещается в новый файл, так что вы можете diff
и т. д. по сравнению с оригиналом. Если вы удовлетворены результатом, вы можете заменить старый файл, простоmv
:присвоив новому файлу имя старого файла.
Предыдущие индексные файлы сохраняются в /var/lib/apt/lists
. Это последние индексные файлы, которые apt
были успешно загружены и проверены.
Ключ определяется по сигнатуре Release
, которая находится не в самом файле Release
, а в Release.gpg
рядом с ним. В некоторых репозиториях есть файл InRelease
, содержащий содержимое Release
со встроенной подписью.
В вашем случае отсутствующий ключ — это ключ PackageCloud Atom; следуйте этим инструкциям , чтобы восстановить его.