我是Powershell的新手,所以在这里寻求帮助。
我需要一个PowerShell脚本,它会读取txt文件并递增每个x变量+1,但计数器会在1行后重置。
样品(原始):
促销活动于美国东部时间2017年5月8日凌晨12:00开始< x id =“8” />并于2017年6月9日美国东部时间晚上11:59结束(“< x id =”9“ />促销期< x id =“10”/>“)
期望的输出:
促销活动于美国东部时间2017年5月8日凌晨12:00开始< x1 id =“8” />并于2017年6月9日美国东部时间晚上11:59结束(“< x2 id =”9“ />促销期< x3 id =“10”/>“)
这是一行,因此它应该再次将计数器重置为1(1..n)
我找到了一个获取所有文件内容并增加所有值的脚本,这不是我所追求的。
我还在研究,所以稍后会更新。
到目前为止更新脚本:
$reader = [System.IO.File]::OpenText("testfile")
#IF ([System.IO.File]::Exists($args[0])) { $contents = [System.IO.File]::ReadAllText($args[0]) } ELSE {
# ECHO "File does not exist!" }
try {
for() {
$line = $reader.ReadLine()
if ($line -eq $null) { break }
$numbers =
[System.Text.RegularExpressions.Regex]::Matches($line, "<x")
for ($i = $numbers.Count - 1; $i -ge 0; $i--)
{
Write-Host ($numbers[$i].Index + $numbers[$i].Length)
$line = $line.Substring(0, $numbers[$i].Index) +
($i + 1).ToString() +
$line.Substring($numbers[$i].Index + $numbers[$i].Length)
}
$line
}
}
finally {
$reader.Close()
}
它实现了增量,但实际正则表达式匹配消失 代码之后:
促销活动于美国东部时间2017年5月8日凌晨12:00开始 1 id =“8”/&gt;并于2017年6月9日美国东部时间晚上11点59分结束(“< strong> 2 id =“”/&gt;促销期 3 id = “10”/&gt;“)。
应该是:
促销活动于美国东部时间2017年5月8日凌晨12:00开始&lt; x1 id =“8”/&gt;并于2017年6月9日东部时间晚上11:59结束&gt;( “&lt; x2 id =”“/&gt;促销期&gt; &lt; x3 id =”10“/&gt;”)。
提前致谢。
答案 0 :(得分:1)
您发布的脚本正在发生变化但却错过了
CHAR_BIT == 8
答案 1 :(得分:0)
您是否有到目前为止尝试过的脚本,或者您希望社区为您编写它?
无论哪种方式,这都是社区其他成员调试和完善的开始......$content = 'Promotion begins at 12:00 am ET on May 8, 2017 <x3 id="8" />and ends at 11:59 pm ET on June 9, 2017 (“<x id="9" />Promotion Period <x id="10" />”)'
$test = ""
ForEach($line in $content){
$splitline = $line -match '\<x\d* id\='
switch ($Matches[0]){
"<x id=" {$test = $line.replace($Matches[0],"<x1 id=") ; break}
"<x1 id=" {$test = $line.replace($Matches[0],"<x2 id=") ; break}
"<x2 id=" {$test = $line.replace($Matches[0],"<x3 id=") ; break}
"<x3 id=" {$test = $line.replace($Matches[0],"<x4 id=") ; break}
"<x4 id=" {$test = $line.replace($Matches[0],"<x5 id=") ; break}
default {"Something else happened"; break}
}
write-host $test
}
对不起,我不会在您更改原始帖子时继续更新上面的代码段。