我正在编写一个脚本,在某一点上必须签入文本文件并删除某些字符串。到目前为止,我有这个:
powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt"
唯一的问题是,它可以找到并替换但不会一起删除该行。
第二个问题是,我说要删除包含Mark
的行,它不需要删除类似Markus
的行。
我不知道PowerShell界面是否可以实现这一目标?
答案 0 :(得分:3)
您当前的代码只会将foo
替换为bar
,这是replace
所做的。
如果匹配整行,则需要采用不同的方法,几乎向后,因为您可以使用notmatch
输出与过滤器不匹配的任何行 - 有效地删除它们。
此外,使用正则表达式word boundaries只会匹配Mark
但不会匹配Markus
:
(Get-Content file.txt) | Where-Object {$_ -notmatch "\bMark\b"} | Set-Content file.txt