- Shell, XAnder, 08:22 , 24-Июн-13 (1) +1
> Подскажите, как добавить несколько символов в начало файла не меняя размер самого > файла, те чтобы данные перезаписывали начало файла.Например, так: $ echo 0123456789 > test $ echo -n 'abc' | dd of=test conv=notrunc 0+1 записей считано 0+1 записей написано скопировано 3 байта (3 B), 0,0145526 c, 0,2 kB/c $ cat test abc3456789 $ _
- Shell, allez, 10:06 , 21-Июл-13 (2)
>[оверквотинг удален] >> файла, те чтобы данные перезаписывали начало файла. > Например, так: > $ echo 0123456789 > test > $ echo -n 'abc' | dd of=test conv=notrunc > 0+1 записей считано > 0+1 записей написано > скопировано 3 байта (3 B), 0,0145526 c, 0,2 kB/c > $ cat test > abc3456789 > $ _ Прошу прощения за некоторую некротичность моего поста. :-) Хочу только добавить, что юникод, в частности - UTF-8, может при определенных условиях доставить неприятности. Например, при использовании символов, выходящих за пределы первой половины таблицы ASCII, получим следующее:
$ echo "0123456789" > test $ echo -n 'абв' | dd of=test conv=notrunc 0+1 записей считано 0+1 записей написано скопировано 6 байт (6 B), 6,288e-05 c, 95,4 kB/c $ cat test абв6789
Размер файла остается прежним, а вот количество символов в нем меняется. Но если этот момент не критичен, то его можно игнорировать. :-)
- Shell, XAnder, 10:00 , 22-Июл-13 (3)
> Хочу только добавить, что юникод, в частности - UTF-8, может при определенных условиях доставить неприятности...Кстати, да. Это вы точно заметили. При использовании кодировок с нефиксированным размером символа (UTF-8 как пример) задача в общем случае не решается. Это если конечно понимать её формулировку, как "заменить первые символы файла заданными символами, не меняя размер файла". Строка замены может иметь, к примеру, 5 байт (не символов), а файл может начинаться с трёх двухбайтовых символов. Тогда "тупая" замена испортит третий символ файла, а "умная" - изменит размер файла. Хотя тоже думаю, что вопрошающему это не критично.
|