如何使用通配符过滤掉一个字符串,并将其修改后输出到另一个文本文件中?

如何使用通配符过滤掉一个字符串,并将其修改后输出到另一个文本文件中?

我想使用 DISM 从 Windows 映像中卸载所有第三方驱动程序,但它似乎不接受通配符。这意味着我必须手动卸载它们,而这正是我想要避免的。到目前为止,我已经以表格形式创建了所有驱动程序的列表,如下图所示:

在此处输入图片描述

据我所知我有两个选择:

  • 在 Windows 10 中使用 bash 子系统
  • 使用 PowerShell。

我只关心oem*.inf部分。但是,除了过滤掉 oem*.inf 文本之外,我还想将其修改为:

/Driver:oem100.inf /Driver:oem101.inf /Driver:oem102.inf /Driver:oem103.inf

等等,以行形式而不是列表格式。

我以为我可以用 grep 来做到这一点,但我的 Linux 技能并不像我希望的那样好。使用 PowerShell 似乎很有希望,但我还不够高级。我该如何实现这一点?

答案1

以下是 PowerShell 解决方案:

$File = "Drivers.txt"
$RegEx = '^oem\d{1,3}.inf'
$Drivers = Select-string $File -Pattern $regex|%{[string]$_.Matches}
$ofs = " /Driver:"
$String="/Driver:"+"$Drivers"
$String | Out-File DriverString.txt

一个小的测试文件给出了这样的结果:

/Driver:oem100.inf /Driver:oem101.inf /Driver:oem102.inf /Driver:oem103.inf /Driver:oem104.inf /Driver:oem105.inf /Driver:oem106.inf /Driver:oem107.inf /Driver:oem108.inf /Driver:oem109.inf

相关内容