В основном, мы просто сохраняем блок по ходу движения, а затем [1175520] grepping[1175521], чтобы посмотреть, есть ли в нем наш паттерн.
Это очень просто, и, скорее всего, у него будут проблемы с некоторыми крайними случаями (если в вашем конфигурационном файле есть \, это может сбить с толку, например, [1175522]echo -e[1175523]), но вы могли бы расширить основную идею, чтобы разобраться с ними.
Пример использования:
Причина, вероятно, в том, что /
( содержащий / etc
) является файловой системой только для чтения, но имеет символические ссылки для / etc / shadow
, / etc / passwd
и других динамических файлов, которые попадают в файловая система чтения-записи.
Это позволит вам напрямую редактировать файлы shadow
и passwd
. sed -i
терпит неудачу, потому что его реализация фактически не обновляется на месте. Вместо этого он создает временный файл и записывает в него изменения, а затем заменяет исходный файл временной копией. Сообщение об ошибке, которое вы видите, говорит, что sed
не может записать (временный) файл / etc / passwdH5HWP7
.
Решение? Либо не используйте -i
и управляйте местоположением временного файла самостоятельно, либо укажите флаг -i
с именем файла. В обоих случаях вам необходимо указать имя файла в месте с доступом для чтения и записи.