Файл усекается, когда вы перенаправляете вывод, используя >
, до того, как команда sed
действительно запустится.
BSD sed
Вместо этого используйте sed -i .bak '/^127\.0\.0\.1[[:space:]]/d' hosts
вместо того, чтобы редактировать встроенный файл, сохраняя резервную копию с расширением bak
, или sed -i '' [...]
чтобы пропустить создание резервной копии.
GNU sed
Вместо этого используйте sed -ibak '/^127\.0\.0\.1[[:space:]]/d' hosts
вместо редактирования встроенного файла, сохраняя резервную копию с расширением bak
, или sed -i [...]
чтобы пропустить создание резервной копии.
Вы также можете сделать это вручную, например, следующее:
sed '/^127\.0\.0\.1[[:space:]]/d' hosts > hosts.new
cat hosts.new > hosts
rm hosts.new
Хотя это еще одна строка, которую использует mv hosts.new hosts
, она сохранит метаданные файла hosts
.