Regex 如何在powershell中替换多个文件中的文本和结束行?
我有多个这样的文件Regex 如何在powershell中替换多个文件中的文本和结束行?,regex,powershell,Regex,Powershell,我有多个这样的文件 TEST:200333 75252 TEST:198234 201756 TEST:201616 274 TEST:200118 934521 TEST:123456 1234 200333;75252 198234;201756 201616;274 200118;934521 123456;1234 我想要这样的输出 TEST:200333 75252 TEST:198234 201756 TEST:201616 274 TEST:200118 934521 TEST
TEST:200333
75252
TEST:198234
201756
TEST:201616
274
TEST:200118
934521
TEST:123456
1234
200333;75252
198234;201756
201616;274
200118;934521
123456;1234
我想要这样的输出
TEST:200333
75252
TEST:198234
201756
TEST:201616
274
TEST:200118
934521
TEST:123456
1234
200333;75252
198234;201756
201616;274
200118;934521
123456;1234
我尝试了此代码,但不起作用:
powershell-Command”(gc myFile.txt)-替换“TEST:(\.+)\r\n(\.+)\r',“\1;\2”\124; Out File-encoding ASCII mynewFile.txt”
您可以使用
powershell -Command "(gc myFile.txt -Raw) -replace '(?m)^TEST:(\d+)\r?\n(\d+)\r?$', '$1;$2' | Out-File -encoding ASCII mynewFile.txt"
或者
看。请注意使用了-Raw
选项,该选项将整个文件压缩成单个字符串
正则表达式匹配
-多行模式打开(?m)
-行开始^
-一些固定文本测试:
-第1组:一个或多个数字(\d+)
-CRLF(回车+换行)/LF(换行)换行结束\r?\n
-第2组:一个或多个数字(\d+)
-可选CR(回车)\r?
-行尾$
powershell -Command "gc myFile.txt | % {$i=0}{if($i++%2){"$prev;$_"}else{$prev=$_.Substring(5)}} | sc mynewFile.txt -enc ASCII"
少代码高尔菲版本:
Get-Content myFile.txt | ForEach-Object -Begin {$i = 0} {
if ($i++ % 2 -ne 0) { # odd line
"$prev;$_" # output "value from previous line;current line"
} else { # even line
$prev = $_.Substring(5) # remember value, cut off the "TEST:"
}
} | Set-Content mynewFile.txt -Encoding ASCII
我获得了这个errorTermine“TEST:200333”非riconosciuto come nome di cmdlet、funzione、programma eseguibile o文件脚本。包括科雷托、昆迪·里普罗瓦雷在内的新一代管理人员。在里加:1车:12+测试:200333@Flavio请使用我刚刚更新的完整命令。它在我这边起作用。我得到一个-RAW参数的错误。如果我删除它,它不会给我一个错误,但它仍然不工作,输出文件与输入文件相同。如果我不使用正则表达式,只使用固定文本,它就可以工作。有什么建议吗?powershell-Command“(gc myFile.txt-Raw)-替换“(?m)^TEST:(\d+)\r?\n(\d+\r?$”,“$1;$2”| Out File-encoding ASCII mynewFile.txt”获取内容:不可能的trovare un参数更正名称“Raw”。在riga:1 car:33+(gc-VacciniSUM_20210510.txt-Raw@Flavio)中,如果您使用的是一些旧的PS版本,请使用
[system.io.file]尝试第二个命令::ReadAllText
。您正在运行哪个版本的PowerShell?您提到,-Raw
参数在发布的解决方案中引发了一个错误?-Raw
是在PowerShell版本3中引入的。这很有效!thanks@Flavio听到这个很好!注意:停下来想想没有正则表达式的方法是否也有效是值得的。