Описание тега farriers
У меня есть YAML файл, который включает в себя строфы выглядит так:
админ::общие::пароли:
Алиса:
пароль: '$6$oTQhLvN/4VFJPscD$8LYwUMSFi'
Боб:
пароль: '$6$JKOtLF0wHeZfIskt$Вт/М5.угдс'
Если учетная запись переменной окружения $содержит имя учетной записи (Алиса, Боб и т. д.), и $YAML это имя YAML файл, я могу добавить новую запись с помощью sed, как это. Он вставляет новую учетную запись прямо под "админ::общие::пароли:" строки, так что я знаю, что это в правильном строфа:
СЕПГ -я /'^админ::общие::пароли:'/а"\ ${запись}:\N пароль: '${ENCRYPTED_PASS}'" $и YAML
Я могу найти существующую учетную запись, как это в случае с awk. Опять же, это находит строфу, затем находит счет в этой строфе (это наверное можно сделать все это в awk, но я не достаточно хорош на awk, и это будет делать эту работу):
на awk "начать{РС=ОРС="\н\н";ПС=ОФС="\п"}/админ::общие::пароль:/" $и YAML | грэп -А1 "^[ ]*${запись}:"
Но чтобы удалить строку, лучшее, что я могу придумать это:
СЕПГ -я "/^ ${запись}:/,+1Д" $и YAML
Что бы удалить строку "^ Алиса:" в любом месте в файле, будь то в админке::общие::пароли строфе или в другом месте.
Я не могу делать никаких предположений о содержании файла, за исключением того, что она содержит ровно один админ::общие:пароли строфы (если это не, то была бы создана другая часть моего скрипта; что немного просто).
Итак, мой вопрос заключается в следующем: как я могу улучшить эту СЭД сказать 'Поиск "^ ${запись}:" в админке::общие::пароли строфы, и удалить соответствующие строки, а также строку'?
(она не должна быть СЭД, конечно; это может быть, что awk или даже Perl, являются более подходящими для задач)