PowerShell高级查找替换



我正在尝试删除一个以(scan .....)开头的.txt文件中的某些行。我尝试的命令是:

(gc A.txt).replace('(Scan*)', '') | sc A.txt

我是用通配符搞砸了,还是PowerShell无法理解我实际上是在尝试在扫描*上找到()并替换它们?

您使用的是仅替换字面字符串的.replace()方法,不允许任何通配符/正则表达式。使用以下方式使用-replace

(gc A.txt) -replace '(Scan[^)]*)', '' | sc A.txt

(Scan[^)]*)正则匹配:

  • (-字面的(
  • Scan-字面炭序
  • [^)]*-零或更多(*)chars以外的其他)
  • ) -a字面)

替换字符串是空的,因为您要删除匹配项。

最新更新