Файл усекается, когда вы перенаправляете вывод, используя > , до того, как команда 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 .