2014-03-19 2 views
-1

У меня есть куча текстовых файлов, которые выровнены (фиксированная ширина), но иногда в середине текстового файла есть строка или два, которые неправильно выровнены:Удалить строки из текстового файла (которые не выровнены) и сохранить его в другом в Powershell

word1 word2 word3 word4 word5 
word1longerword2 word3 word4 word5 
word1 word2 word3 word4 word5 
word1 word2longerthanusualword3 word4 word5 

Как удалить эти строки и сохранить их в другом текстовом файле? Если у меня есть несколько текстовых файлов в каталоге, могу ли я рекурсивно пропустить их все и просто создать один новый текстовый файл? Как я могу сделать новую запятую запятой файла?

Спасибо за помощь

+0

Какую версию Powershell вы используете? – mjolinor

ответ

0

Используйте Select-String команду:

Select-String '\S{10,}' -NotMatch .\data\foo.txt | select -Expand Line 

Узор \S{10,} совпадения последовательностей, по меньшей мере, 10 последовательных непробельных символов. Параметр -NotMatch инвертирует выбор, так что выбираются только строки, не соответствующие шаблону.

+0

Что делать, если мои строки имеют разную ширину? Скажем, слово1 может быть от 0 до 10, а слово2 может составлять 20-25 символов. \ S {10,25}? – user3439076

+0

@ user3439076 Если разные столбцы имеют разную максимальную ширину, вы можете использовать положительное соответствие для всех столбцов: 'Select-String '^ \ S {0,10} \ S {20,25} \ S {5,17} \ S {0,15} \ S {1,20} $ '| ... '. –

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