有没有办法在文本文件中使用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 ;
答案 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
运算符。