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