2017-03-09 51 views
-1

我想删除.txt文件中所有以(扫描.....)开头的部分行。我尝试的命令是:Powershell高级查找替换

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

上午我搞砸了与野生卡,或者是PowerShell的无法理解,我从字面上试图找到()左右扫描*和替换它们吗?

+0

如果是正则表达式,则需要使用正则表达式,而不是通配符:'\(Scan [^)] * \)'或'\(Scan。*?\)' –

+1

Try'(gc A. txt)-replace'\(Scan [^)] * \)',''' –

+0

@WiktorStribiżew:这是'string.Replace'方法,它只是一个字面替换。 – Joey

回答

0

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

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

\(Scan[^)]*\)正则表达式匹配:

  • \( - 字面(
  • Scan - 一个文字字符序列
  • [^)]* - 零个或多个(*)除)之外的字符
  • \) - 文字)

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