2013-09-06 2 views
1

Я пытаюсь фильтровать большой файл журнала. Есть ли способ, чтобы прочитать строку из журнала, если строка содержит менее 2-х символов, удалить всю строку из журнала с помощью Power-скриптФильтр большого файла журнала с помощью powerscript

Я придумал способ подсчета символов в файл

Get-Content ./output.txt | ForEach-Object { $_ | Measure-Object -Character } | Out-File count.txt 

Это считает каждую строку, а затем выводит символы подсчитанные в другой файл

и я знаю, как удалить пустую строку

Get-Content .\output.txt | where {$_ -ne ""} | Set-Content out.txt 

или строка, которая содержит определенный символ или строку

Get-Content .\in.txt | Where-Object {$_ -notmatch 'STRING'} | Set-Content out.txt 

Есть ли способ трубы выхода и спросить «если счетчик равен < = 1 удалить эту строку из журнала»

В принципе

for each line 
     if line is <= 1 delete line 
     else leave alone 

Я надеюсь, что это имеет смысл для вас, ребята, я считаю, что это трудно выйти, что там в моей голове, иногда таким образом, что имеет смысл для других. Любая помощь была бы очень благодарна

ответ

3

$ _ является [string]/System.String, а строка имеет свойства и методы, о которых мы рассказываем длину строки.

Get-Content .\output.txt | where {$_.Length -gt 1} | Set-Content out.txt 
+0

Thanks Loads :) И это имеет смысл – Andy

0

Если вы хотите использовать регулярные выражения для удаления строки с менее чем 2 символов, вы можете сделать следующее:

Get-Content .\in.txt | ? { $_ -match '..' } | Set-Content .\out.txt 

Выражение .. Удачные строки с по крайней мере 2-х символов (не включая строки).

+0

Блестящий, он работал. Благодаря нагрузкам. Я не уверен, как и почему это работает, но я его обработаю. – Andy

+0

'Get-Content' возвращает содержимое файла в виде массива строк. Регулярное выражение позволяет передавать все строки с двумя или более символами и отбрасывает остальные. –

Смежные вопросы