samlowry
@samlowry

Как в консолях линукса записывать вывод файла в тот же файл?

Например, какой-нибудь
cat file | sort > file


Файл затирается при этом.
  • Вопрос задан
  • 4158 просмотров
Пригласить эксперта
Ответы на вопрос 8
sledopit
@sledopit
То, что вы хотите возможно двумя способами:
1. cat file | sort > file.tmp; mv file.tmp file
2. Изменение файла через perl/sed/что-там-еще-обладает-подобными-возможностями, запущенный с опцией -i (фактически они выполняют первый пункт, но вы этого не видите)
Ответ написан
taliban
@taliban
php программист
Так нельзя сделать потому как большинство программ нормальные, и не читают сразу весь файл полностью, а используют буферы для этого, прочитал часть, отобразил, прочитал часть, отобразил.
Чтоб сделать то что Вы хотите, Вам нужно лишь найти программу (опцию) которая считывает весь файл полностью перед выводом.
Ответ написан
@kader
а что мешает сохранить в новый файл и потом произвести конкатинацию?
Ответ написан
VBart
@VBart
f=`cat file`; echo "$f" >> file
Ответ написан
VBart
@VBart
Поторопился =) вот вам решение:
sort file >> file

Команда sort перед сортировкой считывает весь файл в память, что не мудрено.
Ответ написан
Kindman
@Kindman
Можно переименовать файл «file» в "_file", слить то что нужно в «file» а после удалить "_file".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы