PDA

Показать полную графическую версию : Удалить лишние строки из txt


Страниц : [1] 2

aos
07-06-2012, 08:29
Всем доброго времени суток!

Есть такая задачка, Существует текстовый файл с кучей строк

Пример:
http://omsk-base.ru/123.jpg

Нужно удалить те строки у которых после третьего числового столбца нет четвертого (то есть после столбца с тремя цифрами 010,007 и тд)

Заранее огромно спасибо!!!

Iska
07-06-2012, 09:00
aos, выложите часть текстового файла, обрамив его тэгом «code» (http://forum.oszone.net/misc.php?do=bbcode). Возиться, высчитывая количество пробелов на изображении, желания мало.

yurfed
07-06-2012, 09:24
Возиться, высчитывая количество пробелов на изображении, желания мало. »Может стоит обратить внимание на запятую?
Я бы сам, но вообще забыл всё напрочь, а желание вспоминать всё это ни как не приходит :)

aos
07-06-2012, 09:57
2012060623595950012832АБАКУМОВА ТАТЬЯНА СЕРГЕЕВНА 11022148 010
2012060623595933010226АББАСОВ ОЛЕГ МАЗАХИРОВИЧ 11022498 010 440,75
2012060623595950001173АБДРАХИМОВ ХАЙДАР АХТАНОВИЧ 11022283 006 180
2012060623595950010131АБДРАХМАНОВ ТАЛГАТ АБАЕВИЧ 11195620 001 200
2012060623595950010131АБДРАХМАНОВ ТАЛГАТ АБАЕВИЧ 11195620 006 214
2012060623595950005485АБДУЛИН СЕРГЕЙ МАРЛЕНОВИЧ 11022215 010 522
2012060623595950006459АБДУЛИНА ОКСАНА ЮРЬЕВНА 11196278 007
2012060623595950001614АБЕНОВА МАРЖАН КАБДУЛОВНА 11196279 007 697,5
2012060623595933010120АБОЛЬСКИЙ АЛЕКСАНДР ВАЛЕРЬЕВИЧ 11022677 010 468,1
2012060623595950006168АБРАМЕНКО ЭДУАРД ВАСИЛЬЕВИЧ 8404370 010 498,55
2012060623595933014681АБРАМКИН СЕРГЕЙ ВЛАДИМИРОВИЧ 11022676 007
2012060623595950015185АБРАМОВ АНДРЕЙ НИКОЛАЕВИЧ 11195507 007
2012060623595950010875АБРАМОВ ЕВГЕНИЙ НИКОЛАЕВИЧ 11022284 006 422
2012060623595950001864АБРАМОВ ИГОРЬ НИКОЛАЕВИЧ 11195503 007 506,5
2012060623595950000742АБРАМОВ КОНСТАНТИН АНАТОЛЬЕВИЧ 11027130 010
2012060623595950008606АБРАМОВ КОНСТАНТИН ВАСИЛЬЕВИЧ 11195521 007 517,9
2012060623595950060616АБРАМОВ КОНСТАНТИН ВАСИЛЬЕВИЧ 11195522 006 554
2012060623595950060142АБРАМОВ МИХАИЛ НИКОЛАЕВИЧ 11195516 007 1234,3
2012060623595933011243АБРАМОВ СЕРГЕЙ АЛЕКСАНДРОВИЧ 11022675 007 297,5
2012060623595950010553АБРАМОВ СЕРГЕЙ ЛЕОНИДОВИЧ 10952495 010 461,6

El Sanchez
07-06-2012, 11:24
aos, пробуйте

@Echo Off
SetLocal
Set Source=C:\Source.txt

For /F "Tokens=*" %%A In ('Type "%Source%"') Do If "%%A"=="" (Echo:>>"%~dp0_tmp") Else (Call :Proc %%A)
Move /Y "%~dp0_tmp" "%Source%" 2>nul
Exit /B 0

:Proc
For %%A In (%*) Do Echo:%%A|FindStr [0-9] 1>nul&&Set /A Cnt+=1
If "%Cnt%" GTR "3" Echo:%*>>"%~dp0_tmp"
Set Cnt=

aos
07-06-2012, 12:01
Он просто копирует не нужные строки в другой текстовик, а хотелось бы их удалять

Iska
07-06-2012, 12:19
Продолжаю рекламировать Log Parser (http://technet.microsoft.com/ru-ru/scriptcenter/dd919274):
"C:\Program Files\Log Parser 2.2\LogParser.exe" "SELECT Text FROM 'Input.txt' WHERE TRIM(SUBSTR(Text, 97, 10)) <> ''" -i:TEXTLINE -iCodepage:1251 -q:on >Output.txt
2012060623595933010226АББАСОВ ОЛЕГ МАЗАХИРОВИЧ 11022498 010 440,75
2012060623595950001173АБДРАХИМОВ ХАЙДАР АХТАНОВИЧ 11022283 006 180
2012060623595950010131АБДРАХМАНОВ ТАЛГАТ АБАЕВИЧ 11195620 001 200
2012060623595950010131АБДРАХМАНОВ ТАЛГАТ АБАЕВИЧ 11195620 006 214
2012060623595950005485АБДУЛИН СЕРГЕЙ МАРЛЕНОВИЧ 11022215 010 522
2012060623595950001614АБЕНОВА МАРЖАН КАБДУЛОВНА 11196279 007 697,5
2012060623595933010120АБОЛЬСКИЙ АЛЕКСАНДР ВАЛЕРЬЕВИЧ 11022677 010 468,1
2012060623595950006168АБРАМЕНКО ЭДУАРД ВАСИЛЬЕВИЧ 8404370 010 498,55
2012060623595950010875АБРАМОВ ЕВГЕНИЙ НИКОЛАЕВИЧ 11022284 006 422
2012060623595950001864АБРАМОВ ИГОРЬ НИКОЛАЕВИЧ 11195503 007 506,5
2012060623595950008606АБРАМОВ КОНСТАНТИН ВАСИЛЬЕВИЧ 11195521 007 517,9
2012060623595950060616АБРАМОВ КОНСТАНТИН ВАСИЛЬЕВИЧ 11195522 006 554
2012060623595950060142АБРАМОВ МИХАИЛ НИКОЛАЕВИЧ 11195516 007 1234,3
2012060623595933011243АБРАМОВ СЕРГЕЙ АЛЕКСАНДРОВИЧ 11022675 007 297,5
2012060623595950010553АБРАМОВ СЕРГЕЙ ЛЕОНИДОВИЧ 10952495 010 461,6

aos
07-06-2012, 12:31
Спасибо! Работает! Подскажите еще пожалуйста, что прописать чтобы исходящий файл имел следующее название "partnerfull20120606.txt" (дата год месяц число) И можно, чтобы он еще сразу на ftp готовый файл отсылал?

Спасибо!

yurfed
07-06-2012, 13:29
....и на работу за вас ходил :)

aos
07-06-2012, 13:31
а вас »

Просто это не мой профиль поэтому помощи прошу )

Iska
07-06-2012, 15:49
aos, пользователь обладает административными привилегиями? Машина не с Home-версией Windows?

aos
08-06-2012, 05:22
Да обладает, винда 2003 server

Iska
08-06-2012, 06:54
Тогда можно примерно так:
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=%~1

if defined sSourceFile (
if exist "%sSourceFile%" (
for /f "delims=." %%i in ('wmic.exe OS get LocalDateTime ^| find "."') do set sDateTime=%%i
set sDestFile=partnerfull!sDateTime:~,8!.txt

"C:\Program Files\Log Parser 2.2\LogParser.exe" "SELECT Text FROM '%sSourceFile%' WHERE TRIM(SUBSTR(Text, 97, 10)) <> ''" -i:TEXTLINE -iCodepage:1251 -q:on 1>"!sDestFile!"
) else (
echo Source file [%sSourceFile%] not found
)
) else (
echo Usage: "%~nx0" ^<Source file^>
)
endlocal
exit /b 0

Входной файл указывается параметром пакетного файла при запуске.

Для отсылки полученного файла на ftp-сервер — нужны детали.

aos
08-06-2012, 07:54
Почему то не отрабатывает

Iska
08-06-2012, 10:22
aos, опишите подробнее.

aos
08-06-2012, 12:46
Запускаю скрипт, ничего не происходит...он открывается и сразу закрывается

Iska
08-06-2012, 14:11
Входной файл указывается параметром пакетного файла при запуске. »
Запустите командную строку (например, «Win-R», «cmd.exe», «Enter»). В открывшемся окне командного процессора перейдите в каталог, куда нужно помещать выходной файл («cd "Путь"», «Enter»), напишите полный путь к пакетному файлу, следом за ним, через пробел — путь к исходному файлу. Выходной файл будет создан в текущем каталоге.

Или проще — перетащите исходный файл на пакетный файл.

aos
09-06-2012, 08:56
Создается пустой выходной файл, делаю следующим образом:

cd:\d\prod\tranz (путь для готового файла)

D:\prod\tranz>d:\prod\test.bat d:\prod\input.txt (первая часть-путь где лежит батник, вторая часть путь где лежит файл который нужно обработать)


Или я, что то не так делаю?

Iska
09-06-2012, 09:16
aos, проверю, что там у меня может быть не так, но несколько попозже.

aos
13-06-2012, 07:38
Здравствуйте! Еще не было возможности посмотреть, что не работает в скрипте?




© OSzone.net 2001-2012