我希望列出所有匹配,但我只是在输出文件中获得最后一个匹配。
输入文件(ADO):
TOTAL 0000002500
TAX 0000000000
TOTAL 0000001250
TAX 0000002520
TOTAL 0000006250
TAX 0000001820
TOTAL 0000007550
TAX 0000005820
Powershell脚本:
foreach ( $File in ( get-childitem -name $ADO))
{ foreach ($_ in ( Get-Content -path $ADO))
{
# Declaring Variable: Total_Amt
if ( $_.substring(0,5) -Like "TOTAL") {
$TOTAL_AMT = $_.substring(6,10)
}
}
# iterate through ADO file and using above declared variables
foreach ($_ in ( Get-Content -path $ADO))
{
"TOTAL_AMT" + $TOTAL_AMT > $ADO_TMP
}
}
输出文件(ADO_TMP):
TOTAL_AMT0000007550
预期输出文件:
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
SOLUTION:
我通过对脚本进行一些调整来解决问题。 谢谢你的帮助。
foreach ($_ in ( Get-Content -path $ADO))
{
if ($_.substring(0,5) -like "TOTAL")
{$TOTAL_AMT = $_.substring(6,10)
"TOTAL_AMT" + $TOTAL_AMT >> $ADO_TMP
}
}
答案 0 :(得分:1)
每次与$ADO_TMP
匹配时,您都会覆盖>
文件。您需要使用追加运算符>>
:
"TOTAL_AMT" + $TOTAL_AMT >> $ADO_TMP
答案 1 :(得分:0)
您还可以使用where
过滤器来获得所需的输出:
Get-Content $ADO| where { $_ -like 'TOTAL*' } | Set-Content $ADO_TMP