Powershell 从Windows中的文本文件中删除特殊字符

Powershell 从Windows中的文本文件中删除特殊字符,powershell,Powershell,我想从Windows脚本中的文本文件中输出文本,就像在Linux中使用grep: Select-String -Path 'path/to/file' -Pattern '^[#;]|^$' -NotMatch grep-ve^#ve'^;'-ve^$/文件名。 我还没有成功地找到解决办法。我尝试使用Powershell,但使用它的经验很少。使用Select String代替grep: Select-String -Path 'path/to/file' -Pattern '^[#;]|^

我想从Windows脚本中的文本文件中输出文本,就像在Linux中使用
grep

Select-String -Path 'path/to/file' -Pattern '^[#;]|^$' -NotMatch 
grep-ve^#ve'^;'-ve^$/文件名。

我还没有成功地找到解决办法。我尝试使用Powershell,但使用它的经验很少。

使用
Select String
代替
grep

Select-String -Path 'path/to/file' -Pattern '^[#;]|^$' -NotMatch 
选择字符串
将输出一个
匹配
对象,如果您只想匹配字符串,请抓取
属性:

Select-String ... |Select -Expand Line
从PowerShell 7.0开始,您还可以使用
-Raw
开关让
选择字符串
仅返回匹配的字符串,而不返回任何其他内容:

Select-String ... -Raw

这很接近。您可以有一个由逗号分隔的模式数组。就像在bash中一样,分号必须被引用,因为它在powershell中表示“语句结束”。该命令避免使用以“#”开头、以“;”开头或为空的行

'# comment',
'; semicolon',
'',
'one',
'two',
'three' | select-string ^#, '^;', ^$ -notmatch

one
two
three


这就是我过去所追求的输出;get childitem zabbix_agentd.conf |选择字符串-模式“^[#]|^$”-不匹配

这就是我想要的,没有注释掉的所有行和空格。 zabbix_agentd.conf:24:LogFile=C:\Program Files\zabbix Agent\zabbix_agentd.log zabbix_agentd.conf:88:Server=10.0.0.22 zabbix_agentd.conf:130:ServerActive=10.0.0.22 zabbix_agentd.conf:141:Hostname=RED-DOUG zabbix_agentd.conf:257:Include=C:\Program Files\zabbix Agent\zabbix_agentd.conf.d\


谢谢你的帮助,Doug

p.S.我不想修改文件,只需删除特殊字符和任何注释,这样我就不必查看整个文件。