Я использовал sed для удаления строк с определенными словами:
string=${line##* }
sed "/$string/d" $dhcp
Неудобство в том, что есть части текста, которые я не могу безопасно удалить.
В идеале это должно выглядеть примерно так:
пример: ввод:
config host
mac '00:a0:00:00:00:00'
option name 'laptop1'
option dns '1'
config host
option mac '00:a0:00:00:00:00'
option name 'string'
option dns '1'
config host
option name 'laptop3'
mac '00:a0:00:00:00:00'
option dns '1'
Вывод
config host
option mac '00:a0:00:00:00:00'
option name 'laptop1'
option dns '1'
config host
option name 'laptop3'
mac '00:a0:00:00:00:00'
option dns '1'
Какой способ лучше всего подходит для этого?
благодарна за внимание
Я выбрал, основываясь на переносимости, но даже сложно сказать, какой ответ действительно лучший. Спасибо вам всем! / awk -v RS= -v ORS='\n\n' '!/'$string'/' файл
Не позволяйте переменной оболочки (особенно не заключенной в кавычки) расширяться, чтобы стать частью тела сценария оболочки. См. cfajohnson.com/shell/cus-faq-2.html#Q24. Наиболее распространенным способом использования значения переменной оболочки внутри этого awk-скрипта будет
awk -v RS= -v ORS='\n\n' -v str="$string" '$0!~str' file
.Спасибо, это работало очень хорошо в переменных с большим количеством слов.