Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Данные из .txt (http://forum.oszone.net/showthread.php?t=204640)

aggressor_ 13-04-2011 03:36 1657044

Данные из .txt
 
Всем привет!
Есть txt файл в котором вот такие строки
Цитата:

('snkolja@mail.ru', '14e1b6440b1fd579f47433b68e8d85271', 'kolja', 10190, 0, 0, 4, '1290335838', '1253778199', '', 1, '', '', '', 'Николай', 'Minsk, '', '', 1, 0, '', '', '', '4d6fe3e748a4fb8964073324880e393b', '4.8.247.250', 0, 0, '', 0, 0, 0, '0', '0', 0, 0, '0', '', '', '', '', '', '', '', '', '', '', '', ''),
Нужно что бы было так:
Цитата:

snkolja@mail.ru
14e1b6440b1fd579f47433b68e8d85271
kolja
10190
Николай
Minsk

...
Необходимо подчёркнутое перенести в другой txt файл (подчеркнул я для наглядности). Руками не подойдёт, очень много. Можно ли как-нибудь данный процесс автоматизировать?
Да, это из MySQL))

Выствил CMD/BAT, но это не имеет значение, подойдёт любой способ...

amel27 13-04-2011 07:33 1657076

Цитата:

Цитата aggressor_
Есть txt файл в котором вот такие строки »

следовало бы привести минимум 2 строки, а то запятая в конце наводит на разные нехорошие мысли...
тем не менее, вариант на AWK:
Код:

<1.txt >2.txt gawk -v FS="^[(]'?|'?, '?" -v _=\n "{print $2_$3_$4_$5_$16_$17_}"
1.txt - исходный файл
2.txt - результат

aggressor_ 13-04-2011 15:02 1657340

Код:

('djusli@inbox.ru', '43b09a474f90cfc26a335c8b7413211a', 'imane', 22501, 0, 0, 4, '1275678577', '1261521831', '', 1, '', '', '', 'Андрей', 'Минск', 'Номер ICQ', '', 1, 1, '', '', '', '83c3c8fbe2143f33d11e25f185c615a0', '9.5.87.173', 0, 0, '', 0, 0, 0, '0', '0', 0, 0, '0', '', '', '', '', '', '', '', '', '', '', '', ''),
('fwqrt@mail.ru', '69fy4u79e3619bcd79fdf55dc0a0699b', 'Sm', 22500, 0, 1, 4, '1270201314', '1261521656', '', 1, '', '', '', 'Артём', 'Минск', 'Номер ICQ', '', 1, 1, '', '', '', '803aab649bff7684449db020ee96a5ddb', '8.0.162.138', 0, 0, '', 0, 0, 0, '0', '0', 0, 0, '0', '', '', '', '', '', '', '', '', '', '', '', ''),

и так далее, каждая запись с новой строки, оканчивается запятой.
Цитата:

Код:

<1.txt >2.txt gawk -v FS="^[(]'?|'?, '?" -v _=\n "{print $2_$3_$4_$5_$16_$17_}"
1.txt - исходный файл
2.txt - результат
Нужно указывать путь? Это в батник?

amel27 13-04-2011 16:52 1657427

батник из одной строки... предполагается, что сам батник, gawk.exe и 1.txt лежат в одной папке, иначе нужно указывать пути

aggressor_ 13-04-2011 18:36 1657511

что-то не работает, создал txt, в него скопировал
Код:

<1.txt >2.txt gawk -v FS="^[(]'?|'?, '?" -v _=\n "{print $2_$3_$4_$5_$16_$17_}"
переименовал в copy.bat

в 1.txt мои строки
Код:

('djusli@inbox.ru', '43b09a474f90cfc26a335c8b7413211a', 'imane', 22501, 0, 0, 4, '1275678577', '1261521831', '', 1, '', '', '', 'Андрей', 'Минск', 'Номер ICQ', '', 1, 1, '', '', '', '83c3c8fbe2143f33d11e25f185c615a0', '9.5.87.173', 0, 0, '', 0, 0, 0, '0', '0', 0, 0, '0', '', '', '', '', '', '', '', '', '', '', '', ''),
('fwqrt@mail.ru', '69fy4u79e3619bcd79fdf55dc0a0699b', 'Sm', 22500, 0, 1, 4, '1270201314', '1261521656', '', 1, '', '', '', 'Артём', 'Минск', 'Номер ICQ', '', 1, 1, '', '', '', '803aab649bff7684449db020ee96a5ddb', '8.0.162.138', 0, 0, '', 0, 0, 0, '0', '0', 0, 0, '0', '', '', '', '', '', '', '', '', '', '', '', ''),

дополнительно создал 2.txt, всё в одной папке. По нажатию на copy.bat ничего не происходит.
Может нужна какая-то определённая кодировка?
----------------------------------

если 2.txt не создавать, то после выполнения батника появляется пустой txt файл.

amel27 13-04-2011 18:40 1657515

aggressor_, а GAWK.EXE из архива по линку поста #2 скопировали в эту папку?..
2.txt не нужен - он создаётся как результат работы батника

aggressor_ 13-04-2011 18:49 1657520

Большое спасибо, заработало))

Цитата:

snkolja@mail.ru
14e1b6440b1fd579f47433b68e8d85271
kolja
10190
Николай
Minsk
а можно сделать сортировку по этому пункту в порядке возрастания?
Напр
Цитата:

snkolja@mail.ru
14e1b6440b1fd579f47433b68e8d85271
kolja
10190
Николай
Minsk

s23ja@mail.ru
14e1b6440b1fd579f47433b68e8d85271
lesha
10191
Алексей
Minsk

amel27 13-04-2011 19:21 1657540

Цитата:

Цитата aggressor_
а можно сделать сортировку по этому пункту в порядке возрастания? »

за один проход уже не выйдет, как-то так:
Код:

<1.txt gawk -v FS="^[(]'?|'?, '?" -v _=^| "{print $5_$2_$3_$4_$16_$17}"|sort|gawk -v FS=^| -v _=\n "{print $2_$3_$4_$1_$5_$6_}">2.txt

aggressor_ 13-04-2011 19:27 1657545

немного не так , он сортирует так
1
10
100
1001
и т.д.

Ну ладно, без сортировки тоже хорошо.

amel27 13-04-2011 19:55 1657564

тогда еще вариант:
Код:

<1.txt gawk -v FS="^[(]'?|'?, '?" -v _=^| "{printf\"%%10i\",$5;print _$2_$3_$4_$16_$17}"|sort|gawk -v FS="^ *|[|]" -v _=\n "{print $3_$4_$5_$2_$6_$7_}">2.txt


Время: 01:57.

Время: 01:57.
© OSzone.net 2001-