Как удалить все, кроме последних 10 строк из файла? Можно ли сохранить только последние 10 строк строк с помощью простой команды оболочки? tail -n 10 test.log предоставляет правильный результат, но я не знаю, как изменить сам test.log. И tail -n 10 test.log > test.log не работает. Ответ 1 Вы можете сделать это, используя tempfile. tail -n 10 test.log > test1.log mv test1.log test.log Ответ 2 echo "$(tail -n 10 test.log)" > test.log Важные цитаты. Они сохраняют символы новой строки. Ответ 3 Вызов команды ed (текстовый редактор): echo -e '1,-10d\nwq' | ed <filename> Это приведет к отправке команды для удаления строк ('1, -10d'), сохранения файла ('w') и выхода ('q'). Также обратите внимание, что ed failed (код возврата равен 1), когда входной файл имеет менее 11 строк. Изменить: Вы также можете использовать редактор vi (или команду ex): vi - +'1,-10d|wq' <filename> Но если входной файл имеет 10 или меньше строк, редактор vi останется открытым, и вы должны ввести ': q' для выхода (или 'q' с командой ex). Ответ 4 ruby -e 'a=File.readlines("file");puts a[-10..-1].join' > newfile Ответ 5 Также вы можете использовать переменную: LOG=$(tail -n 10 test.log) echo "$LOG" > test.log
Ответ 1 Вы можете сделать это, используя tempfile. tail -n 10 test.log > test1.log mv test1.log test.log
Ответ 3 Вызов команды ed (текстовый редактор): echo -e '1,-10d\nwq' | ed <filename> Это приведет к отправке команды для удаления строк ('1, -10d'), сохранения файла ('w') и выхода ('q'). Также обратите внимание, что ed failed (код возврата равен 1), когда входной файл имеет менее 11 строк. Изменить: Вы также можете использовать редактор vi (или команду ex): vi - +'1,-10d|wq' <filename> Но если входной файл имеет 10 или меньше строк, редактор vi останется открытым, и вы должны ввести ': q' для выхода (или 'q' с командой ex).