仅考虑最后一场比赛的Powershell foreach$行
我希望列出所有匹配项,但我只得到输出文件中的最后一个匹配项 输入文件(ADO):仅考虑最后一场比赛的Powershell foreach$行,powershell,foreach,match,Powershell,Foreach,Match,我希望列出所有匹配项,但我只得到输出文件中的最后一个匹配项 输入文件(ADO): TOTAL 0000002500 TAX 0000000000 TOTAL 0000001250 TAX 0000002520 TOTAL 0000006250 TAX 0000001820 TOTAL 0000007550 TAX 0000005820 foreach ( $File in ( get-childitem -name $ADO)) { foreach ($_ in (
TOTAL 0000002500
TAX 0000000000
TOTAL 0000001250
TAX 0000002520
TOTAL 0000006250
TAX 0000001820
TOTAL 0000007550
TAX 0000005820
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
}
}
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
Powershell脚本:
TOTAL 0000002500
TAX 0000000000
TOTAL 0000001250
TAX 0000002520
TOTAL 0000006250
TAX 0000001820
TOTAL 0000007550
TAX 0000005820
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
}
}
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
输出文件(ADO\U TMP):
TOTAL 0000002500
TAX 0000000000
TOTAL 0000001250
TAX 0000002520
TOTAL 0000006250
TAX 0000001820
TOTAL 0000007550
TAX 0000005820
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
}
}
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
预期输出文件:
TOTAL 0000002500
TAX 0000000000
TOTAL 0000001250
TAX 0000002520
TOTAL 0000006250
TAX 0000001820
TOTAL 0000007550
TAX 0000005820
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
}
}
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
解决方案:
我对脚本做了一些调整,解决了这个问题。 谢谢你们的帮助
foreach ($_ in ( Get-Content -path $ADO))
{
if ($_.substring(0,5) -like "TOTAL")
{$TOTAL_AMT = $_.substring(6,10)
"TOTAL_AMT" + $TOTAL_AMT >> $ADO_TMP
}
}
每次发现与
匹配时,您都会覆盖$ADO\U TMP
文件。您需要使用追加运算符>
:
"TOTAL_AMT" + $TOTAL_AMT >> $ADO_TMP
您还可以使用
where
过滤器获得所需的输出:
Get-Content $ADO| where { $_ -like 'TOTAL*' } | Set-Content $ADO_TMP
谢谢,但我认为这不是问题所在。现在我看到了多行,但结果相同
TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550
我对脚本做了一些调整,解决了这个问题。谢谢你们的帮助<代码>foreach($uu-in(获取内容-路径$ADO)){if($u.substring(0,5)-类似于“TOTAL”){$TOTAL_u-AMT=$u.substring(6,10)“TOTAL_u-AMT”+$TOTAL_u-AMT>>$ADO_TMP}不起作用。得到了我在回复上述评论时提到的相同结果**脚本修改为:*foreach($File-in(get-childitem-name$ADO)){foreach($#in(get-Content-path$ADO)){{声明变量:Total\u Amt if($#.substring(0,5)-类似“Total”){$Total\u Amt=$#.substring(6,10)}}#遍历ADO文件并使用上述声明的变量foreach($in(Get Content-path$ADO)){where{$Ike'TOTAL*}| Set Content$ADO_TMP}
我通过对脚本进行一些调整,解决了这个问题。谢谢你们的帮助foreach($uu-in(Get Content-path$ADO)){if($u.substring(0,5)-类似于“TOTAL”){$TOTAL_-AMT=$u.substring(6,10)“TOTAL_-AMT”+$TOTAL_-AMT>>$ADO_-TMP}
我通过对脚本进行一些调整,解决了这个问题<代码>foreach($uu-in(获取内容-路径$ADO)){if($u.substring(0,5)-类似于“TOTAL”){$TOTAL_u-AMT=$u.substring(6,10)“TOTAL_u-AMT”+$TOTAL_u-AMT>>$ADO_TMP}