2010-06-23 102 views
4

我對PowerShell非常陌生。我想使用PowerShell來讀取一個txt文件,並將其更改爲另一種格式。Powershell,從txt文件中讀取數據並格式化(刪除行,刪除之間的空格)

  1. 從txt文件讀取。
  2. 格式數據(刪除線,在之間移除空格)
  3. 計數的記錄(「T 000000002」 9個字符)

,然後輸出寫入到一個新文件。

我剛剛開始兩天前的PowerShell,所以我不知道如何做到這一點呢。從文件

回答

1
function Count-Object() { 
    begin { 
     $count = 0 
    } 
    process { 
     $count += 1 
    } 
    end { 
     $count 
    } 
} 

$a= get-content .\members.txt | 
Foreach-Object { ($_ -replace '\s','') } | 
Foreach-Object { ($_ -replace '-','') } | 
Foreach-Object { ($_ -replace 'OP_ID','') } | 
Foreach-Object { ($_ -replace 'EFF_DT','') } | 
Where-Object { $_ -ne '' }| 
set-content .\newmembers.txt 

$b = Get-Content .\newmembers.txt | 
Count-Object $b 
"T {0:D9}" -f $b | add-content .\newmembers.txt 
8
  1. 閱讀:

    Get-Content file.txt 
    
  2. 不太清楚你想要的這裏。 Get-Content返回一個字符串數組。然後你可以操縱你得到的東西並傳遞它。這裏最有用的cmdlet可能是Where-Object(用於過濾)和ForEach-Object(用於操作)。

    例如,要刪除所有空行,你可以做

    Get-Content file.txt | Where-Object { $_ -ne '' } > file2.txt 
    

    這可以縮短到

    Get-Content file.txt | Where-Object { $_ } > file2.txt 
    

    因爲在布爾上下文空字符串的計算結果爲false

    或刪除的每一行空間:

    Get-Content file.txt | ForEach-Object-Object { $_ -replace ' ' } > file2.txt 
    
  3. 再次,不太清楚你在這裏後,在做什麼。我可以從你過於詳盡的描述想到的可能事情是沿

    $_.Substring(2).Length 
    

    $_ -match '(\d+)' | Out-Null 
    $Matches[1].Length 
    
+1

只需注意:通過'>'重定向以Unicode創建文件。如果您需要指定編碼,請使用'... |設置內容文件名-encoding Utf8'。 – stej 2010-06-23 20:17:03

+0

...或者'Out-File',類似地。 @stej:你的「Unicode」意思是「UTF16-LE」在這種情況下:-) – Joey 2010-06-24 07:17:14

+0

大家好,非常有用。但我仍然試圖弄清楚如何計算行數。我能夠刪除空格我的代碼到目前爲止是 $ s = get-content D:\ MyScripts \ members.txt | Foreach-Object {($ _ -replace' - ','')} | Foreach-Object {($ _ -replace'OP_ID','')} | Foreach-Object {($ _ -replace'EFF_DT','')} | Where-Object {$ _ -ne''} | 刪除空間$ s |設置內容D:/ MyScripts/nmembers。txt – user350332 2010-06-29 17:42:19

1

我也很喜歡線條的東西嗎?用來替代那個對象來修剪它。

Get-Content file.txt | ?{ $_ } > file2.txt