Как я могу удалить первую строку файла и сохранить изменения?
Я пробовал это, но он стирает все содержимое файла.
$sed 1d file.txt > file.txt
shell-script
sed
ksh
kickass13
источник
источник
sed
вы можете использоватьsed -i .bak '1d' file.txt
.ed
.ed
Команда будет:printf "%s\n" 1d w q | ed file.txt
(I сердце ред)-exec sed -i '1d' {} \;
Альтернативный очень легкий вариант - просто «хвостить» все, кроме первой строки (обычно это может быть простой способ удаления заголовков файлов):
Следуя @Evan Teitelman, вы можете:
Чтобы избежать временного файла. Другой вариант может быть:
И так далее. Тестирование последнего:
К сожалению, мы потеряли новую строку (за комментарий @ 1_CR ниже), попробуйте вместо этого:
Возвращаясь к sed, попробуйте:
или возможно
Чтобы избежать побочных эффектов.
источник
tail
Трюк работал на меня (потребовалось менее 3 секунд на файл 130MB). Спасибо!echo "$(tail -n +2 file.txt)" > file.txt
это идеальный ответ.Также обратите внимание на
sponge
сmoreutils
.sponge
впитывает данные из стандартного ввода до тех пор, пока конец записи стандартного ввода не закроется перед записью в файл. Используется так:источник
Эта тема представляет интерес, поэтому я тестирую тест в трех направлениях:
sed '1d' d.txt > tmp.txt
tail -n +2 d.txt > tmp.txt
sed -i '1d' d.txt
Обратите внимание, что цель
d.txt
файла 5.4 ГБПолучите результат:
Вывод: кажется ниже будет самый быстрый путь:
sed '1d' file.txt > tmpfile; mv tmpfile file.txt
источник
sed '1d' d.txt
метод не включал (или кажется, читая ваши тесты)mv
команду. В моих тестах на FreeBSD с файлом размером 20 МБ скоростьsed -i
была самой быстрой.ex
может использоваться для истинного редактирования на местебез использования временного файлаисточник
strace -e open ex -c ':1d' -c ':wq' foo
, ex усекает исходный файл с временным файлом, где опция -i в GNU sed перезаписывает исходный файл с временным файлом. Я не уверен, как работает sed BSD.Самый короткий и простой способ удалить первую строку из файла с помощью
sed
:источник
Вы можете использовать Vim в режиме Ex:
1
найти первую строкуd
удалятьx
сохранить и закрытьисточник
Эта команда удалит 1 строку и сохранит как «file.txt».
источник
Удалить строку правила в файле
Sed '1d' файл
Sed файл "1d3d"
Удалить персонажа в строке
1 Удалить первые два чартера в Лин
Sed 's /^..//' file
2 Удалите последние две строки
Sed 's / .. £ //' file
3 Удалить пустую строку
Sed '/ ^ £ / d' файл
источник
£
≠$
.Может использовать Vim для этого:
источник
кошка file01 | sed -e '1,3d'
// показать содержимое в file01, но удалить первую и третью строку
источник