IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   ищу прогу для перестановки (https://www.imho.ws/showthread.php?t=45729)

PGM 11.12.2003 06:18

ищу прогу для перестановки
 
Есть данные файл, файл большой текстовый 70 метров.
Задача Данные идут так:

1. строка. А, Б, В, Г, Д, Ж
2. строка. А, Б, В, Г, Д, Ж
3. строка. А, Б, В, Г, Д, Ж

и так 700 тыс. строк.

а надо сделать в такой последовательности :

1. строка Б, Г, В, Д
2. строка Б, Г, В, Д
3. строка Б, Г, В, Д

а А и Ж вообще удалить, даные везде разные поэтому просто найти и заменить на мой взгляд нельзя...

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

заранее Спасибо!

AID 11.12.2003 07:49

помоему такой проги нет
но я думаю что можно сделать все ето в Microsoft Access
импортирывать туда твою базу и работать с ней уже как тебе угодно

Ghost 11.12.2003 10:56

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

З.Ы. Можно в принципе и прогу, основная проблема здесь заключается только в том, что файл слишком велик.

YAS 11.12.2003 11:53

Цитата:

PGM:
а А и Ж вообще удалить, даные везде разные
Если данные везде разные, то каков тогда алгоритм замены? Или нужна простая перестановка? В таком случае, проще всего написать прогу по перестановке!

А топ лучше обсуждать в "Программирование", а не "Программы" - перенес.

c00ler 11.12.2003 12:02

PGM
Берешь любой текстовый редактор с функций замены. Пишешь "Найти A и заменить на ""(Пусто). Также поступаешь и с Ж.

PGM 11.12.2003 12:17

c00ler
не катит, А постояно разное (телефонные номера)
найти и заменить по звездочкам находит так же и Б В и др. данные..

c00ler 11.12.2003 12:20

PGM
Ну если А всегда разное - то такое сделать автоматически низя - тока руками.

SapeR 11.12.2003 12:24

действительно легче написать самому
Код:

#include <stdio.h>

#define MAX_LEN 100

void main()
{
    FILE *f_inp = fopen("c:\\file1.txt","rt");
    FILE *f_out = fopen("c:\\file2.txt","wt");

    char s1[MAX_LEN+1], s2[MAX_LEN+1];
    int cycle_count = 0;

    if (f_inp!=0 && f_out!=0)
    {
        while( !feof(f_inp) )
        {
            switch (cycle_count)
            {
            case 0: // 'A' - ignore
                fgets(s1,MAX_LEN,f_inp);
                break;
            case 1: // 'B' - copy
                fgets(s1,MAX_LEN,f_inp);
                fputs(s1,f_out);
                break;
            case 2: // 'V' - read to S2
                fgets(s2,MAX_LEN,f_inp);
                break;
            case 3: // 'G' - copy + write S2
                fgets(s1,MAX_LEN,f_inp);
                fputs(s1,f_out);
                fputs(s2,f_out);
                break;
            case 4: // 'D' - copy
                fgets(s1,MAX_LEN,f_inp);
                fputs(s1,f_out);
                break;
            case 5: // 'E' - ignore
                break;
            default:
                // ???
                break;
            }
            cycle_count = (cycle_count+1)%6;
        }
    }
    fcloseall();


PGM 11.12.2003 12:45

Всем Спасибо, сделал с Accessom
По совету AID , все получилось прикрутил к таблице переразбил, удалил и поменял :)

MTop 15.12.2003 13:09

а вот на перле то же самое на Перле
$path="C:/";
open (file, $path."file.txt");
my @Report1 = <file>;
close (file);
chomp(@Report1);
open (file, ">".$path."otchot.txt");
foreach my $item1 ( @indata1 )
{
my @array1=split(/,/,$item1);
print file, @array1[0]," ",@array1[1]," ",@array1[3]," ",@array1[4]," ",@array1[5]," ",@array1[6],"\n";
}
close (file);

someone312002 16.12.2003 14:04

Эх, если б можно было всё это обработать селектом... replace(source_string, search_what, replace_with) тебе бы помог...


Часовой пояс GMT +4, время: 07:49.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.