The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Shell, !*! ZeND, 23-Июн-13, 13:52  [смотреть все]
Здравствуйте !
Подскажите, как добавить несколько символов в начало файла не меняя размер самого файла, те чтобы данные перезаписывали начало файла.
  • 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 байт (не символов), а файл может начинаться с трёх двухбайтовых символов. Тогда "тупая" замена испортит третий символ файла, а "умная" - изменит размер файла.

        Хотя тоже думаю, что вопрошающему это не критично.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру