尝试使用以下内容删除文本文件中的一行,但没有任何内容正在移动,但是如果我在文档中找到例如' a'并替换为' b'有用?!我在这做错了什么?谢谢!
所以基本上当使用如下的数字时,它会完全删除该行。试过$ null和" $ number",""没有运气。
(Get-Content C:\temp\Test.txt) |
Foreach-Object {$_ -replace "tel:+123456789;ext=1234","$null"} |
Set-Content C:\temp\Test.txt
答案 0 :(得分:1)
假设您要删除与文件中的正则表达式匹配的所有行:
@(Get-Content C:\temp\Test.txt) -notmatch 'tel:+123456789;ext=1234' |
Set-Content C:\temp\Test.txt
使用数组作为LHS,运算符-notmatch
充当过滤器,它通过(仅)不匹配的行。
请注意,以这种方式替换文件很容易,因为如果在写回文件时出现问题,可能会丢失数据。
如果不指定-Encoding
,Set-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 $_ } })