Войти

Показать полную графическую версию : [решено] Данные из .txt


aggressor_
13-04-2011, 03:36
Всем привет!
Есть 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
Есть txt файл в котором вот такие строки »следовало бы привести минимум 2 строки, а то запятая в конце наводит на разные нехорошие мысли...
тем не менее, вариант на AWK (http://gnuwin32.sourceforge.net/packages/gawk.htm):<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
('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
батник из одной строки... предполагается, что сам батник, gawk.exe и 1.txt лежат в одной папке, иначе нужно указывать пути

aggressor_
13-04-2011, 18:36
что-то не работает, создал 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
aggressor_, а GAWK.EXE из архива по линку поста #2 скопировали в эту папку?..
2.txt не нужен - он создаётся как результат работы батника

aggressor_
13-04-2011, 18:49
Большое спасибо, заработало))

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
а можно сделать сортировку по этому пункту в порядке возрастания? »за один проход уже не выйдет, как-то так:
<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
немного не так , он сортирует так
1
10
100
1001
и т.д.

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

amel27
13-04-2011, 19:55
тогда еще вариант:
<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




© OSzone.net 2001-2012