Использование PowerShell для очистки текстового файла

Использование PowerShell для очистки текстового файла

Борюсь с этим и думаю, может ли кто-то помочь. У меня есть большой текстовый файл, в котором есть дополнительные данные, которые я хочу удалить. Вот пример входного файла:

Text In Page - 1

S
Dept
l<m RKB)
"1915
slightly 234234
"sil dsf 56
"gr
gl
1920 100
1925 100
1930 100 Cls
"1935 100 Cl


Text In Page - 2

l<m RKB)
"1915
slightly
"sil
"gr
glauc
1920 100
1925 100
1930 100 Cls
"1935 100 Cl

Я хочу удалить следующее:

  • Любые пустые строки
  • Любой " в начале строк
  • Любые строки, начинающиеся с буквы AZ, az

Итак, в приведенном выше примере у меня осталось бы

1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl

решение1

Я думаю:

(gc D:\test.txt) -replace '^"' | sls '\S' | sls -NotMatch '^[A-Za-z]' | sc out.txt

Что делает:

  • получить строки файла, и если первый символ — кавычка, заменить его ничем
  • выбрать строки, которые соответствуют условию «не пробел» (т.е. пустые строки отфильтровываются)
  • выберите строки, которые не начинаются с A-Za-z
  • записывает результаты в out.txt

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

$lines = Get-Content D:\test.txt
$lines = $lines -replace '^"'
$lines = $lines | Select-String '\S'
$lines = $lines | Select-String -NotMatch '^[A-Za-z]'
$lines | Set-Content out.txt

Связанный контент