将powershell中的字符替换为缩进和换行

将powershell中的字符替换为缩进和换行,powershell,replace,foreach,indentation,line-breaks,Powershell,Replace,Foreach,Indentation,Line Breaks,有没有办法在文本文件中使用foreach和replace来更改具有换行符和x个缩进数的字符?特殊的请求,但它是为了使它在另一个程序中可读 示例文本: dyreriket{Animalia} !莱德多默{Annelida} ·伊格勒${Clitellata} 符号|、!、@、,·应使用换行符和给定数量的缩进替换$和更多。我可以让缩进生效,但换行符不行。使用'n'时没有响应,它只删除原始字符。到目前为止,我一直在玩这个代码 $t1 = '\@'; $r1 = "`n`t`t"; $t2='\¤';

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

示例文本:

dyreriket{Animalia}
!莱德多默{Annelida}
·伊格勒${Clitellata}

符号|、!、@、,·应使用换行符和给定数量的缩进替换$和更多。我可以让缩进生效,但换行符不行。使用'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 ;  

您可以按如下方式逐行替换文本:

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

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

用于替换所有出现的
|
@
Input.txt
中的
$
字符,带有换行符,后跟回车符,后跟两个制表符,并将结果文本写入
Output.txt
。要执行不区分大小写的搜索,请使用
-replace
-ireplace
运算符。

感谢您的响应,但我得到一些不一致的结果,可能是由于保留字符或其他原因。当试图替换时,它会在文档中的每个字符之间添加't'。并且它忽略了'n'。
-replace
运算符的替换文本参数是一个。管道是正则表达式中的一个特殊字符,因此需要将其转义为
“\\\\”
。请注意,您是为.NET正则表达式引擎而不是PowerShell转义它,这就是为什么您使用反斜杠而不是backtick.Aah。这解释了其中的一些原因,但换行符仍然不起作用:这是我键入的代码。
$searchText='\\124;'$replacementText=“
n
t
t”;从文件C:\arter\final2.txt中获取内容C:\arter\final1.txt`| ForEach对象{$\creplace$searchText,$replacementText;}``您是否可以编辑您的问题,以包括您正在使用的代码和您正在执行搜索和替换的一些示例文本?我认为注释框误解了您的一些背景标记。请尝试
$replacementText=“`r`n`t`t”。我忘记了
`n
只是一个LF而不是CR-LF,因为我使用的是Notepad++它仍然呈现了看起来正确的输出。直到我启用了空白字符的显示,我才注意到丢失的回车符。