2
有没有办法使用foreach和替换文本文件来改变一个字符与换行符和x的缩进数?特殊的请求,但它是使其在另一个程序中可读。替换字符与缩进和换行符在powershell
示例文本:!
dyreriket | {}动物界
leddormer @ {}环节动物
¤igler$ {}环带纲
符号|,@,¤, $和更多应该用换行符和给定数量的缩进代替。我可以使缩进工作,但不是换行符。使用`n时没有响应,它只删除原始字符。到目前为止,我一直在玩这个代码。
$t1 = '\@';
$r1 = "`n`t`t";
$t2='\¤';
$r2="`n";
Get-Content C:\arter\test.txt `
| ForEach-Object { $_ -creplace $t1, $r1; } `
|ForEach-Object { $_ -creplace $t2, $r2; } `
| Out-File C:\arter\test2.txt ;
感谢您的回应,但我得到了一些不一致的结果,这可能是由于保留字符或其他原因造成的。试图替换|时它会在文档中的每个字符之间添加't'。它忽略了'n。 – 2012-07-17 15:07:50
'-replace'运算符的替换文本参数是[.NET正则表达式](http://msdn.microsoft.com/library/az24scfc.aspx)。 Pipe是正则表达式中的一个特殊字符,因此您需要将其作为''\ |''转义。请注意,您正在为.NET正则表达式引擎而不是PowerShell进行转义,这就是您使用反斜杠而不是反向引用的原因。 – BACON 2012-07-17 15:08:45
啊。这解释了一些,但换行符仍然不起作用:S这里是我输入它的代码。 $ replacementText =“'n't't”; Get-Content C:\ arter \ final1.txt' | ForEach-Object {$ _ -creplace $ searchText,$ replacementText; }' | Out-File C:\ arter \ final2.txt; ' – 2012-07-17 15:17:51