система: CentOS 6,5дополнительные нулевые символы, когда SED отредактировать файл в месте, которое под wirting
Bash Версия: 4.1.2
GNU СЭД версия: 4.2.1
1 .create файл, который под письмом:
$ while sleep 1; do date +ABCDEFG[%d/%b/%Y\ %H\:%M:%S]ABCDEFG;done > access_test.log 2>/dev/null &
$ tail -n 2 access_test.log
ABCDEFG[29/Apr/2016 14:08:14]ABCDEFG
ABCDEFG[29/Apr/2016 14:08:15]ABCDEFG
2.use sed, чтобы иметь дело с ним на месте.
$ sed -c -i --follow-symlinks -e 'w /dev/stdout' -e 'd' access_test.log > foo
$ less access_test.log
"access_test.log" may be a binary file. See it anyway?
@^@^@^@^@^@^@^@^@^@^@^@^@....<omit>
3.my вопрос:
, когда СЭД дела с файлом wihch находится под письменной формой, она уезжала много нуля (\ 0) символы, которые выстилают он закончил.
Почему это происходит? Могу ли я его избежать?
Примечания от man sed
:
-c, --copy
use copy instead of rename when shuffling files in -i mode. While this will avoid breaking links (symbolic
or hard), the resulting editing operation is not atomic. This is rarely the desired mode; --follow-sym-
links is usually enough, and it is both faster and more secure.
Что такое 'СЕПГ -c -i --follow-симлинка -e 'ж/разработчик/STDOUT' -e 'd' access_test.log> Foo' должен делать ? – fedorqui
@fedorqui печатать строки в stdout и удалять их на месте, поэтому номер inode файла не будет изменен sed, а его содержимое будет сохранено в другом файле, его размер уменьшится. – lxf1992521
Что такое опция '-c', у моего sed нет этого? – anubhava