Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Чем разрезать файл?   Найти похожие ветки 

 
brother ©   (2010-02-02 13:00) [0]

Есть лог файл (более 9 гигов), надо вырезать с его конца гиг, какой прогой это можно быстро сделать?


 
oldman ©   (2010-02-02 13:02) [1]

NortonCommander
:)


 
brother ©   (2010-02-02 13:04) [2]

а еще?


 
Ega23 ©   (2010-02-02 13:06) [3]

я всегда тащщился с Апача, который лог ошибок в один файл кидал и потом после нескольких гиг умирал, пытаясь залоггировать ошибку.


 
brother ©   (2010-02-02 13:06) [4]

это оно и есть... чем?(


 
tesseract ©   (2010-02-02 13:08) [5]

total commander. Ну или любой архиватор - store и разбить.


 
Hamster ©   (2010-02-02 13:09) [6]

WinHEX.


 
MBo ©   (2010-02-02 13:13) [7]

быстрее написать программку из 40-50 строчек


 
Anatoly Podgoretsky ©   (2010-02-02 13:19) [8]

> brother  (02.02.2010 13:00:00)  [0]

Это надо свою писать, я не разу не видел программы, которая вырезает последний гигабайт.


 
Anatoly Podgoretsky ©   (2010-02-02 13:20) [9]

> MBo  (02.02.2010 13:13:07)  [7]

А чего так много?


 
KilkennyCat ©   (2010-02-02 13:40) [10]


> Anatoly Podgoretsky ©   (02.02.10 13:20) [9]

about тож нужен


 
KSergey ©   (2010-02-02 13:47) [11]

Если точность не принципиальна - архиватором сделать многотомный архив, с частями по гигабайту, и установить "без компрессии"
Правда я не уверен, что в этом случае он байты на месте оставит как были, все ж архиватор - он с битовым потоком работает по идее...


 
KilkennyCat ©   (2010-02-02 13:49) [12]

есть куча программ для склейки-резки, например HJSplit


 
Anatoly Podgoretsky ©   (2010-02-02 13:50) [13]

> KSergey  (02.02.2010 13:47:11)  [11]

Дальше расскажи как потом выдрать только нужный гигабайт в рабочем состоянии.


 
KSergey ©   (2010-02-02 13:51) [14]

Если файл текстовый: берем grep
делаем
  grep -c "" file
получаем кол-во строк
прикидываем сколько последних нам надо из общего объема.
пропускаем файл через
  grep -n "" file>new_file
получаем новый файл с пронумерованными строками.
грепаем из файла строки по такой маске, чтобы остались только последние интересующие.


 
brother ©   (2010-02-02 13:52) [15]

> с частями по гигабайту, и установить "без компрессии"

да но там нужно быть аккуратным...

> Если файл текстовый: берем grep

к сожалению утащили лог на винду...


 
KSergey ©   (2010-02-02 13:53) [16]

> brother ©   (02.02.10 13:52) [15]
> к сожалению утащили лог на винду...

Дык я про винду и говорю
А как на ней без unxtools жить? я не умею, у меня всегда стоят :)


 
KSergey ©   (2010-02-02 13:54) [17]

unxtools == unixtools


 
KSergey ©   (2010-02-02 13:56) [18]

> Anatoly Podgoretsky ©   (02.02.10 13:50) [13]
> Дальше расскажи как потом выдрать только нужный гигабайт в рабочем состоянии.

Если байты лягут правильно, т.е. с несдвинутыми битами - то достаточно будет взять последний кусок архива и любым текст. редактором отрезать шапку. Или и вовсе так оставить - почти всем он вполне понравится.
Или попросить архиватор распаковать только последнюю часть, может у него и получится, хотя я не уверен, може т закочевряжиться.

Ну в общем "я вам концепцию!"


 
brother ©   (2010-02-02 13:58) [19]

> Или и вовсе так оставить

этот вариант рассматривался... ща режу тоталом


 
Игорь Шевченко ©   (2010-02-02 14:01) [20]

На написание программы требуется 20 минут.
На вопрос на форуме требуется (судя по этой ветке) минимум час.


 
brother ©   (2010-02-02 14:02) [21]

> На написание программы требуется 20 минут.

к сожалению делфи 6
ограничение Seek = 2147483647 байт...(


 
Anatoly Podgoretsky ©   (2010-02-02 14:12) [22]

> brother  (02.02.2010 14:02:21)  [21]

function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
Во вторых seek назад = 1 гб


 
brother ©   (2010-02-02 14:23) [23]

> function Seek(const Offset: Int64; Origin: TSeekOrigin):
> Int64; override;

procedure Seek(var F; N: Longint); у меня в справке...


 
brother ©   (2010-02-02 14:25) [24]

> Во вторых seek назад = 1 гб

Seek 9Гб - 1Гб = 8Гб!


 
Вариант   (2010-02-02 14:34) [25]

Есть SetFilePointer (Windows.pas) и SetFilePointerEx (для дельфи 6 экспортировать самому)


 
Вариант   (2010-02-02 14:37) [26]


> Вариант   (02.02.10 14:34) [25]

экспортировать=импортировать


 
Игорь Шевченко ©   (2010-02-02 14:42) [27]

вот тупо так:

var
 hf, ho: THANDLE;
 foffset: LARGE_INTEGER;
 buffer: Pointer;
 bytesread, byteswritten: ULONG;
begin
 hf := CreateFileA(PAnsiChar(filename), GENERIC_READ,
   FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE,
   nil, OPEN_EXISTING, 0, 0);
 WIN32Check(hf <> INVALID_HANDLE_VALUE);
 try
   foffset.LowPart := GetFileSize(hf, @foffset.HighPart);
   foffset.QuadPart := fOffset.QuadPart - 1024*1024*1024;
   foffset.LowPart := SetFilePointer(hf, foffset.LowPart, @foffset.HighPart, FILE_BEGIN);
   Win32Check((foffset.LowPart <> INVALID_HANDLE_VALUE) or (foffset.HighPart <> 0));
   GetMem(buffer,65536);
   try
     ho := CreateFileA(PAnsiChar(outfile), GENERIC_WRITE, 0, nil, CREATE_NEW,
       0, 0);
     Win32Check(ho <> INVALID_HANDLE_VALUE);
     try
       Win32Check(ReadFile(hf, buffer^, 65536, bytesread, nil));
       while (bytesread > 0) do
       begin
         Win32Check(WriteFile(ho, buffer^, bytesread, byteswritten, nil)
           and (byteswritten = bytesread));
         Win32Check(ReadFile(hf, buffer^, 65536, bytesread, nil));
       end;
     finally
       CloseHandle(ho);
     end;
   finally
     FreeMem(buffer);
   end;
 finally
   CloseHandle(hf);
 end;
end;


 
Anatoly Podgoretsky ©   (2010-02-02 14:54) [28]

> brother  (02.02.2010 14:23:23)  [23]

Взлетит, не взлетит.
Вспотеет, не вспотеет.


 
Anatoly Podgoretsky ©   (2010-02-02 14:57) [29]

> brother  (02.02.2010 14:23:23)  [23]

Ну и что, 1 гб все равно меньше 2 гб.
Но вот справка именно из Д6

> function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;


 
Anatoly Podgoretsky ©   (2010-02-02 14:57) [30]

> brother  (02.02.2010 14:25:24)  [24]

Никаких 9-1, просто 1 от конца.


 
brother ©   (2010-02-02 15:03) [31]

> Но вот справка именно из Д6


> Никаких 9-1, просто 1 от конца.

Спасибо я уже понял о чем Вы... (трудно соображаю()


 
Кто б сомневался ©   (2010-02-02 23:58) [32]

WinHEX.


 
Кто б сомневался ©   (2010-02-02 23:58) [33]

WinHEX.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.054 c
2-1271556108
[true]TRIx
2010-04-18 06:01
2010.08.27
ищу пример многопоточного копирования одного файла побайтно


2-1271683418
kos123
2010-04-19 17:23
2010.08.27
Поиск в StringGrid ...


15-1264505295
mefodiy
2010-01-26 14:28
2010.08.27
Провайдер для MySQL


2-1273166923
worldmen
2010-05-06 21:28
2010.08.27
Ошибка при копиляции из Delphi 7 в Delphi 2010


9-1181801403
hunn
2007-06-14 10:10
2010.08.27
Дарю идею игры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский