Powershell,从txt文件中读取数据并格式化(删除行,删除之间的空格)
问题描述:
我对PowerShell非常陌生。我想使用PowerShell来读取一个txt文件,并将其更改为另一种格式。Powershell,从txt文件中读取数据并格式化(删除行,删除之间的空格)
- 从txt文件读取。
- 格式数据(删除线,在之间移除空格)
- 计数的记录(“T 000000002” 9个字符)
,然后输出写入到一个新文件。
我刚刚开始两天前的PowerShell,所以我不知道如何做到这一点呢。从文件
答
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
答
-
阅读:
Get-Content file.txt
-
不太清楚你想要的这里。
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
-
再次,不太清楚你在这里后,在做什么。我可以从你过于详尽的描述想到的可能事情是沿
$_.Substring(2).Length
或
$_ -match '(\d+)' | Out-Null $Matches[1].Length
答
我也很喜欢线条的东西吗?用来替代那个对象来修剪它。
Get-Content file.txt | ?{ $_ } > file2.txt
只需注意:通过'>'重定向以Unicode创建文件。如果您需要指定编码,请使用'... |设置内容文件名-encoding Utf8'。 – stej 2010-06-23 20:17:03
...或者'Out-File',类似地。 @stej:你的“Unicode”意思是“UTF16-LE”在这种情况下:-) – Joey 2010-06-24 07:17:14
大家好,非常有用。但我仍然试图弄清楚如何计算行数。我能够删除空格我的代码到目前为止是 $ 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