Powershell替换文本文件中的文本而不删除

时间:2018-04-10 02:20:46

标签: arrays powershell

尝试使用以下内容删除文本文件中的一行,但没有任何内容正在移动,但是如果我在文档中找到例如' a'并替换为' b'有用?!我在这做错了什么?谢谢!

所以基本上当使用如下的数字时,它会完全删除该行。试过$ null和" $ number",""没有运气。

    (Get-Content C:\temp\Test.txt) | 
Foreach-Object {$_ -replace "tel:+123456789;ext=1234","$null"} | 
Set-Content C:\temp\Test.txt

2 个答案:

答案 0 :(得分:1)

假设您要删除与文件中的正则表达式匹配的所有行:

@(Get-Content C:\temp\Test.txt) -notmatch 'tel:+123456789;ext=1234' |
  Set-Content C:\temp\Test.txt
  • 使用数组作为LHS,运算符-notmatch充当过滤器,它通过(仅)不匹配的行。

  • 请注意,以这种方式替换文件很容易,因为如果在写回文件时出现问题,可能会丢失数据。

  • 如果不指定-EncodingSet-Content使用Default编码,即系统的活动" ANSI"遗留代码页。

答案 1 :(得分:0)

这将删除文件中的文字。

$path = "C:\temp\Test.txt"
$remove = "tel:+123456789;ext=1234"

$content = Get-Content $path
$newContent = ($content | ForEach-Object { $_.Replace($remove, "") })
Set-Content $path $newContent

如果我想删除其中包含该数字的整行:

$newContent = ($content | ForEach-Object { if ($_ -like "*$remove*") { return "" } else { return $_ } })
相关问题