Почему «awk... file | tee file» обрезает файл?

Вы можете установить From:и другие параметры в файле конфигурации. Тело должно исходить из стандартного ввода.

Например:

cat msg.txt | mutt to@example.com -F ~/.mutt_settings -s "this is my subject" -a file.zip

Для файла настроек скопируйте уже работающий файл настроек и измените строку From:

my_hdr From: Super Man <me@example.com>
3
24.09.2020, 05:15
1 ответ

Со временем вы обнаружите, что такое поведение непоследовательно.

Проблема в том, что teeв какой-то момент времени открывает файл для записи. С этого момента файл усекается. Это не зависит от того, какая программа читает файл.

Просто так случилось, что catработает очень быстро и что чтение файла, по-видимому, было завершено до того, как teeоткрывает файл. Но если, например, нагрузка на систему больше, catможет быть не завершен, и конвейер с catтакже может обрезаться.

Итак, не записывайте в тот же файл, из которого вы читаете конвейер. Вместо этого используйте Gnu awk-i inplaceили, если это недоступно в вашей системе, используйте

cp file file.tmp &&
awk '...' file.tmp | tee file
10
18.03.2021, 23:03

Теги

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