Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.066 c
2-1271927010
Rail
2010-04-22 13:03
2010.08.27
меню


11-1216127473
KOLBOSS
2008-07-15 17:11
2010.08.27
DBF + DBF = DBF?


2-1270400826
lamer6666
2010-04-04 21:07
2010.08.27
Потоки и POST


15-1270632155
ocean
2010-04-07 13:22
2010.08.27
Gigabit net


2-1269648248
HF-Trade
2010-03-27 03:04
2010.08.27
IDHttp.Post Проблема с залогиниванием