在powershell中用缩进和换行符替换字符

时间:2012-07-17 13:23:02

标签: powershell replace foreach indentation line-breaks

有没有办法在文本文件中使用foreach和replace来更改带有换行符和x个缩进字符的字符?特殊的要求,但它是让它在另一个程序中可读。

示例文字:

  

dyreriket | {动物界}
  !leddormer @ {}环节动物
  ¤igler$ {Clitellata}

符号|,!,@,¤,$等等应该替换为linebreak和给定数量的缩进。我可以使缩进工作,但不能使用换行符。使用`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 ;  

1 个答案:

答案 0 :(得分:1)

您可以像这样执行逐行文本替换:

$searchText = '[|!@☼$]';
$replacementText = "`r`n`t`t";

Get-Content -Path Input.txt `
    | ForEach-Object { $_ -creplace $searchText, $replacementText; } `
    | Out-File -FilePath Output.txt;

使用regular expression character classes替换|!@$个字符中出现的所有字符1}}带有换行符,后跟回车符,后跟两个制表符,并将生成的文本写入Input.txt。要执行不区分大小写的搜索,请使用Output.txt-replace运算符。