1 (изменено: alexii, 2012-06-07 08:57:01)

Тема: CMD/BAT: Удалить строки из текстового файла по условию

Всем доброго времени суток!

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

Пример:

http://omsk-base.ru/123.jpg

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

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

2

Re: CMD/BAT: Удалить строки из текстового файла по условию

AOS, я поправил заголовок в соответствии с Правилами форума.

Выложите часть текстового файла, обрамив его тэгом «code». Возиться, высчитывая количество пробелов на изображении, желания мало.

3 (изменено: AOS, 2012-06-07 09:53:00)

Re: CMD/BAT: Удалить строки из текстового файла по условию

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                                                           
2012060623595950008538АБРОСИМОВА МАРИНА ДМИТРИЕВНА            11022216                      010 166,7                                                           
2012060623595933018932АБУЛГАЗИН ЖАНАРБЕК ГАЛИМАРДАНОВИЧ       11022674                      006 267,5                                                           
2012060623595950014122АВДОШИН АЛЕКСЕЙ НИКОЛАЕВИЧ              10952321                      010 446,25                                                          
2012060623595950001892АВИЛОВА СВЕТЛАНА ГЕОРГИЕВНА             11027131                      007 1036,7                                                          
2012060623595950003355АВРАМЕНКО АНДРЕЙ АЛЕКСАНДРОВИЧ          8403707                       010 498,9

4

Re: CMD/BAT: Удалить строки из текстового файла по условию

Продолжаю рекламировать Log Parser:

"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

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

5 (изменено: Rumata, 2012-06-07 13:42:23)

Re: CMD/BAT: Удалить строки из текстового файла по условию

Вроде бы по теме, но решение дано другими средствами. Просто иллюстрация, как это можно было решить с шелле.
Стандартно, с помощью sed:

sed -e '/^.\{97\} /d' filename

с помощью grep:

grep -v -E '^.{97} ' filename

или с помощью любимого мной Perl

perl -ne 'print unless /^.{97} /' filename
( 2 * b ) || ! ( 2 * b )

6

Re: CMD/BAT: Удалить строки из текстового файла по условию

Ну и еще так для винды:

for /f "tokens=*" %%i in (input.txt) do (
    echo %%i > temp.txt  
    for /f "tokens=1,2,3,4,5*" %%i in (temp.txt) do if "%%n" NEQ "" type temp.txt >> output.txt
)

7 (изменено: smaharbA, 2012-06-14 12:50:05)

Re: CMD/BAT: Удалить строки из текстового файла по условию

findstr /r /c:"^[\t ]*[0-9][0-9]*.*[\t ][\t ]*[0-9][0-9]*[\t ][\t ]*[0-9][0-9]*[\t ][\t ]*[0-9]" text.txt > 123

Я конечно далек от мысли... (с)

8 (изменено: yuriy2000, 2012-08-28 05:55:45)

Re: CMD/BAT: Удалить строки из текстового файла по условию

smaharbA пишет:

findstr /r /c:"^[\t ]*[0-9][0-9]*.*[\t ][\t ]*[0-9][0-9]*[\t ][\t ]*[0-9][0-9]*[\t ][\t ]*[0-9]" text.txt > 123

может я что-то не понимаю, или у меня Windows не та...., но я не могу заставить findstr искать символ табуляции.

9

Re: CMD/BAT: Удалить строки из текстового файла по условию

alexii пишет:

Продолжаю рекламировать Log Parser:

Алексей, а если данные в текстовом файле (описание товара; артикул; дата; цена ; количество; ) но разделитель точка с запятой.
Как можно воспользоваться данной программой?

10

Re: CMD/BAT: Удалить строки из текстового файла по условию

al2, упакуйте файл в архив, выложите на RGhost. Ссылку — сюда.