使用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

相關內容