Если все, что вам нужно, это добавить текст в последнюю строку, это очень просто с помощью sed. Замените $
(сопоставление с образцом в конце строки) текстом, который вы хотите добавить, только в строках в диапазоне $
(что означает последнюю строку).
sed '$ s/$/ and Linux/' file.new &&
mv file.new file
, которое в Linux можно сократить до
sed -i '$ s/$/ and Linux/' file
. Если вы хотите удалить последний байт в файле, Linux (точнее, GNU coreutils) предлагает команду truncate
, которая упрощает эту задачу.
truncate -s -1 file
В POSIX это можно сделать с помощью dd
. Сначала определите длину файла, а затем обрежьте ее на один байт меньше.
length=$(wc -c
Обратите внимание, что оба они безоговорочно усекают последний байт файла. Вы можете сначала проверить, что это новая строка:
length=$(wc -c
Вероятно, лучший способ справиться с этим — использовать команду debugfs ssv
для редактирования суперблока, чтобы уменьшить количество блоков и индексов на значение одной группы элементов, а затем запустить e2fsck. Это, по сути, отменяет последнюю часть изменения размера, позволяя вам снова использовать файловую систему.