所以基本上我有一系列遵循相同命名法的 .txt 檔案,例如:
1111210803_3CE_080977851__006908818__21110300013442021110420211105_20211110_120447_35418862_820
1111210933_3CE_006908818__2111040001442021110520211108_20211110_120447_35418860_820
這些所有檔案的命名約定總是以日期開頭,即111121. 在這些檔案中,您有幾行字串。我有興趣從這些檔案中的每一個中提取第一行中的特定字串。這是第一行的示例:
123456789012345678901234567890123 I 696969CCHKCTX 12345678901 DA 22758287
特別是,我對696969CCHKCTX字串感興趣。所有檔案都會有一些數字,后跟CCHKCTX值。我想從每個 .txt 檔案中提取字串的696969一部分696969CCHKCTX并將它們全部附加到一個新檔案中。
如果可能,我想對這些字串求和并添加適當的小數位,因為它們實際上是美元值,即696969實際表示6969.69并且該字串中的最后兩個數字始終表示美分金額。此規則適用于所有 .txt 檔案。我希望能夠將此應用于所有日期相同的檔案(即所有以 開頭的檔案111121)
我該怎么辦?
uj5u.com熱心網友回復:
嘗試以下操作,它結合了Get-ChildItem、Group-Object、 和ForEach-Object,以及-replace運算子:
Get-ChildItem -File | # get files of interest; add path / filter as needed.
Group-Object { $_.Name.Substring(0, 6) } | # group by shared date prefix
ForEach-Object {
$firstLines = $_.Group | Get-Content -First 1 # get all 1st lines
# Extract the cents amounts and sum them.
$sumCents = 0.0
$firstLines.ForEach({
$sumCents = [double] ($_ -replace '. \b(\d )CCHKCTX\b. ', '$1')
})
# Output an object with the date prefix and the sum dollar amount.
[pscustomobject] @{
Date = $_.Name
Sum = $sumCents / 100
}
}
以上輸出一個表格格式的表示到顯示幕。例如,您可以使用>/將其保存到檔案中Out-File,但最好使用結構化文本格式進行后續處理,例如Export-Csv.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/358631.html
