![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск и замена |
|
|
CMD/BAT - [решено] Поиск и замена
|
Новый участник Сообщения: 5 |
Добрый день.
Имеется тектовый файл, размером более 5000 строк. Вида: pl (IdPl,X,Y,TitleLine,Name,Description,idRowMetric,idPlMetric,Person) Values (26916,1000,3750,'','','11',null,NULL,1) pla (IdPl,EncLevel,IdSection) Values (26916,2,21) pla(IdPl,EncLevel,IdSection) Values (26916,1,1065) Pl (IdPl,X,Y,TitleLine,Name,Description,idRowMetric,idPlMetric,Person) Values (26917,2900,3750,'','','11',null,NULL,1) Pla(IdPl,EncLevel,IdSection) Values (26917,2,21) Pla (IdPl,EncLevel,IdSection) Values (26917,1,1065) Pl (IdPl,X,Y,TitleLine,Name,Description,idRowMetric,idPlMetric,Person) Values (26918,1050,3750,'','','11',null,NULL,1) Pla (IdPl,EncLevel,IdSection) Values (26918,2,21) Pla (IdPl,EncLevel,IdSection) Values (26918,1,1065) Pl (IdPl,X,Y,TitleLine,Name,Description,idRowMetric,idPlMetric,Person) Values (26919,1100,3750,'','','11',null,NULL,1) Pla (IdPl,EncLevel,IdSection) Values (26919,2,21) Pla (IdPl,EncLevel,IdSection) Values (26919,1,1065) Задача состоит в том, что-бы заменить все Выделенные жирным цветом значения(они меняются +1 каждую четвертую строчку), на отрицательные цифры по порядку: 26916 == -1 , 26917 == -2 , 26918 == -3 ... |
|
Отправлено: 10:44, 18-03-2016 |
Забанен Сообщения: 793
|
user689, уважаемый, Вы в своем уме? Обрабатывать файл в пять тысяч строк на командном языке - что-то из разряда утонченного извращения. PowerShell'то достаточно долго думал, к слову, решение на нем будет выглядеть примерно так:
Наименее затратным по времени оказался Perl: Чуть более затратным оказался Python, далее - Ruby. sed'ом еще не пробовал, но, нужно полагать, он немногим уступает тому же Python'у или Perl'у. |
Отправлено: 19:08, 18-03-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1759
|
|
Отправлено: 20:16, 18-03-2016 | #3 |
Забанен Сообщения: 793
|
|
Отправлено: 20:36, 18-03-2016 | #4 |
Ветеран Сообщения: 1759
|
Цитата greg zakharov:
|
||
Отправлено: 21:07, 18-03-2016 | #5 |
Забанен Сообщения: 793
|
В принципе, если гибридить JScript с командным языком, то:
0</* : @cscript /nologo /e:jscript "%~f0" %*&exit /b */0; (function(file) { with (new ActiveXObject('Scripting.FileSystemObject')) { if (!FileExists(file)) { WScript.echo('File not found or does not exist.'); return; } var fs = OpenTextFile(GetAbsolutePathName(file), 1); while (!fs.atEndOfStream) { var s = fs.ReadLine(); if (s !== null) { WScript.echo(s.replace(/\d{5}/, "-" + (s.match(/\d{5}/)-26915))); } } fs.Close(); } }( WScript.Arguments.length !== 1 ? (function() { WScript.echo('Usage: ' + WScript.ScriptName + ' <file>'); WScript.echo('.e.g.: ' + WScript.ScriptName + ' E:\\sandbox\\file.txt'); WScript.Quit(1); }()) : WScript.Arguments.Unnamed(0) )); gawk при замерах также показывает неплохой результат. |
Отправлено: 22:01, 18-03-2016 | #6 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Спасибо за ответы!
PowerShell справился с задачей. А как быть если в тексте встречаются дополнительные строки, количество их может быть разное, например: pl (IdPl,X,Y,TitleLine,Name,Description,idRowMetric,idPlMetric,Person) Values (26916,1000,3750,'','','11',null,NULL,1) pla (IdPl,EncLevel,IdSection) Values (26916,2,21) pla(IdPl,EncLevel,IdSection) Values (26916,1,1065) go Pl (IdPl,X,Y,TitleLine,Name,Description,idRowMetric,idPlMetric,Person) Values (26917,2900,3750,'','','11',null,NULL,1) Pla(IdPl,EncLevel,IdSection) Values (26917,2,21) Pla (IdPl,EncLevel,IdSection) Values (26917,1,1065) commit go ... ... ... Однако перед каждым заменяемым значением всегда присутствуют "Values (" |
Отправлено: 06:34, 21-03-2016 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата user689:
|
|
Отправлено: 07:15, 21-03-2016 | #8 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Пример файла во вложении.
ttv.7z |
Отправлено: 08:52, 21-03-2016 | #9 |
Ветеран Сообщения: 1759
|
user689, Попробуйте такой вариант:
|
Последний раз редактировалось Foreigner, 21-03-2016 в 10:06. Отправлено: 10:00, 21-03-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Поиск и замена файлов. | Drotik | Скриптовые языки администрирования Windows | 2 | 24-04-2014 18:07 | |
Любой язык - Поиск и замена текста | firstarey | Скриптовые языки администрирования Windows | 2 | 09-04-2013 08:44 | |
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках | Gawr33 | Скриптовые языки администрирования Windows | 11 | 23-04-2011 23:09 | |
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файлов на разных дисках | 4zz | Скриптовые языки администрирования Windows | 2 | 21-02-2011 16:07 | |
Разное - поиск и замена | ansslecter | Программное обеспечение Windows | 1 | 06-07-2010 16:03 |
|