通过PowerShell替换文件每行的前两个字符

时间:2017-01-03 21:51:06

标签: powershell

我有一个文件需要替换每行的前两个字符。这看起来很容易,但前两个字符相同" | 0"在文件的其他地方显示。所以我最终得到了替换字符串" $ bp"到处都是。任何方式只需替换" | 0"的第一个实例仅限每一行?以下是示例数据:

0|Corrupt Record|0|0|0|0|0|0|0|0|0

2 个答案:

答案 0 :(得分:1)

您的问题不明确(|0 vs 0|)。

您可以使用此代码段替换每行的2个第一个字符如果0|

$oldContent = Get-Content "my/file"

$newContent = $OldContent | ForEach-Object { $_ -replace "^0\|","newstring" }
# simpler
#$newContent = $OldContent -replace "^0\|","newstring"

$newContent | Set-Content "my/file"

答案 1 :(得分:-1)

我确信还有其他方法可以做到这一点,但这就是我的方法。

只替换第一次出现的“0 |”剩下的逗留你可以像这样替换它。

$CorruptString = "0|Corrupt Record|0|0|0|0|0|0|0|0|0"
[regex]$ToReplace = "0\|"
$ToReplace.replace($CorruptString, "", 1) 

这将输出:

  

腐败记录| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

只是一个简单的正则表达式来替换损坏的字符串并将其替换为任何内容或任何您想要替换它的内容。当然1是这样它只有一次。

我相信这就是你要找的东西。如果没有尝试解释更多。

编辑:因为帖子有些混乱。要替换字符串中的前两个字符,您只需执行子字符串即可删除前两个字符。

"0|Corrupt Record|0|0|0|0|0|0|0|0|0".Substring(2)