PowerShell:从文件中删除最后一个管道字符

时间:2014-04-07 18:26:40

标签: windows powershell text trim powershell-v3.0

我有一个包含200个管道的文件,其中一些管道之间有数据,其他管道是连续管道。文件行看起来像这样。

|08|6|6|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||02|||||||Z4|2014-04-02 15:49:58|04|001|01|***|PMER|***|***|2013-08-01|||||||||||||||||

我有这个powershell脚本来处理最后几个管道的排除:

gc .\oauthrn.cms|% {$a=@();$b="";$a+=$_.split('|'); for ($i=0;$i -lt 168; $i++) {$b+=$a[$i]+'|'} $b}|out-file "H:\Documentation\Scripts\Pipe Delimiter Project\shineynewfile.txt"

将该文件行转换为...(在一个文件中有几行这样的行)

|08|6|6|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||02|||||||Z4|2014-04-02 15:49:58|04|001|01|***|PMER|***|***|2013-08-01|

最后一步是修剪掉每一行末尾的最后一根管子,但是在那里保留日期...有关如何实现这一点的任何建议吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

试试这个:

gc .\oauthrn.cms|%{$_.TrimEnd("|")}|out-file .\ShineyNewFile.txt

修剪所有“|”每行末尾的字符。

答案 1 :(得分:1)

执行以下操作

(Get-Content c:\test.txt) | 
ForEach-Object {$_ -replace '$\|', ''} |
Set-Content c:\test.txt