Как отфильтровать строку с подстановочным знаком и вывести ее в другой текстовый файл с модификацией?

404
David Prentice

Я хочу удалить все сторонние драйверы из образа Windows с помощью DISM, но, похоже, он не принимает подстановочные знаки. Это означает, что мне придется удалить их все вручную, чего я хочу избежать. Пока что я создал список всех драйверов в табличном формате, как показано на рисунке ниже:

enter image description here

У меня есть два варианта, насколько я вижу:

  • Используйте подсистему bash в Windows 10
  • Используйте PowerShell.

Я забочусь только о части oem * .inf . Однако, помимо простой фильтрации только текста oem * .inf, я бы хотел изменить его следующим образом:

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

и т.д., в строке, а не в формате списка.

Я думал, что смогу сделать это с помощью grep, но мои навыки в Linux не так хороши, как хотелось бы. Использование PowerShell кажется многообещающим, но я еще недостаточно продвинут. Как мне этого добиться?

0

1 ответ на вопрос

1
LotPings

Вот решение PowerShell:

$File = "Drivers.txt" $RegEx = '^oem\d.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