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