Парсинг для моделирования “grep-C 2” в версии 1.0 PowerShell

Вы можете использовать Папку и Файловые утилиты

$file = new File(WWW_ROOT.'/img/'.$user->image);
$file->delete();

5
задан Peter Mortensen 8 September 2013 в 19:26
поделиться

5 ответов

При становлении ближе здесь - потому что Избранная Строка возвращает объекты MatchInfo, которые я могу вытащить номер строки из (39 017), теперь я просто должен вытянуть строку, окружающую... так:

gc $bigfile | Select-String melissao | 
%{(gc $bigfile)[($_.LineNumber -2)..($_.LineNumber +2)]}

Если кто-либо мог бы очистить это немного для создания этого менее медленным, у Вас может быть ответ. Иначе это решение работает, но очевидно не быстро.

1
ответ дан 13 December 2019 в 19:37
поделиться

PowerShell, эквивалентный из grep, является избранной строкой. Можно использовать следующее.

cat file | select-string "pattern" -context 2

Примечание: это работает в PowerShell v2.0 только.

7
ответ дан 13 December 2019 в 19:37
поделиться

Вместо того, чтобы использовать ($bigfile gc) снова, который заставит PowerShell читать в $bigfile в память на каждом объекте, переданном по каналу к нему ForEach-объектом cmdlet, необходимо, вероятно, считать файл в переменную и затем индекс массива от этого, как так:

$bigfile = gc 'c:\scripts\bigfile.txt'
$bigfile | Select-String "melissao" | % {$bigfile[($_.LineNumber -3)..($_.LineNumber +1)]}

Кроме того, так как нумерация строк запускается в 1, и индексация массива запускается в 0, необходимо будет пойти назад 3, не 2, чтобы получить строку два пробелов выше "melissao", и пойти вперед 1, не 2, получить строку два пробелов ниже "melissao". Выполнение этого будет сеть Вы эти 5 строк, которые Вы хотите, "melissao" между этими двумя строками выше и ниже его.

Я не супер знаком с grep-C 2, таким образом, я не знаю, копирует ли это ту функциональность точно.

3
ответ дан 13 December 2019 в 19:37
поделиться

Загрузить grep для Windows и назвать grep от PowerShell?

-1
ответ дан 13 December 2019 в 19:37
поделиться

Увы, похоже, что необходимо будет создать его сами или ожидать следующей версии powershell, поскольку это, кажется, было реализовано там. Можно загрузить предварительную версию Powershell 2.0 отсюда.

1
ответ дан 13 December 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: