Имя пользователя:
Пароль:
 

Название темы: [решено] Поиск и замена
Показать сообщение отдельно

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


В принципе, если гибридить 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)
));
По скорости все же быстрее PowerShell'а. Правда операции над группами при замене не пракатывают, приходится еще и match задействовать.
gawk при замерах также показывает неплохой результат.
Код: Выделить весь код
gawk 'match($0,/(.*\()([0-9]{5})(,.*)/,a) {$0=a[1]"-"a[2]-26915a[3]} 1' file
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:01, 18-03-2016 | #6

Название темы: [решено] Поиск и замена