Как я добавляю текст к началу файла в Bash?

Привет я хочу предварительно ожидать текст в файл. Например, я хочу добавить задачи к началу файла todo.txt. Я знаю echo 'task goes here' >> todo.txt но это добавляет строку в конец файла (не, что я хочу).

289
задан 17.02.2011, 05:21

3 ответа

echo 'task goes here' | cat - todo.txt > temp && mv temp todo.txt

или

sed -i '1s/^/task goes here\n/' todo.txt

или

sed -i '1itask goes here' todo.txt
377
ответ дан 07.12.2019, 07:39

Можно создать новый, временный файл.

echo "new task" > new_todo.txt
cat todo.txt >> new_todo.txt
rm todo.txt
mv new_todo.txt todo.txt

Вы могли бы также использовать sed или awk. Но в основном то же самое происходит.

5
ответ дан 07.12.2019, 07:39

Вы не можете вставить содержание в начале файла. Единственная вещь, которую можно сделать, или заменить существующее содержание или добавить байты после текущего конца файла.

Любое решение Вашего вопроса затем требует, чтобы временный файл (или буфер) был создан (на памяти или на диске), который в конечном счете перезапишет исходный файл.

Остерегайтесь не проигрывающих данных путем сохранения исходного файла, при создании нового должен файловая система, оказываться, быть полной во время процесса. например:

cat <(echo task go there) todo.txt > todo.txt.new && mv todo.txt.new todo.txt
2
ответ дан 07.12.2019, 07:39

Теги

Похожие вопросы