2014-03-19 69 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

如果我的琴絃有不同的寬度會怎麼樣?說word1可以是0-10之間的任何值,word2可以是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} $'| ...'。 –

相關問題