Слияние текстов из разных областей - PullRequest
1 голос
/ 22 июня 2019

Мне нужно удалить содержимое в красном прямоугольнике на рисунке 1, а затем создать новый текстовый файл.

Также замените инженера AIDA64 на AIDA64 Ultimate

Поскольку зарезервированные поля разделены на разные области, например: Материнская плата: , это кажется несколько сложным

В следующем посте некоторые связанные с этим проблемы были решены. Получить строки для определенного региона

enter image description here

--------[ AIDA64 Engineer ]------------------------------------------------------------

    version                                              AIDA64 Engineer v6.00.5100/cn

--------[ System verview ]-------------------------------------------------------------

    Motherboard:
      Processor name                                    Mobile DualCore Intel

    DMI:
      DMI BIOS Vendor                                   Phoenix Technologies

--------[ DMI ]------------------------------------------------------------------------

  [ BIOS ]

    BIOS Attributes:
      Vendor                                            Phoenix Technologies Ltd.

  [ Motherboard ]

    Motherboard:
      manufacturer                                      Intel Corp.

    Motherboard manufacturer:
      company name                                      Intel Corporation

--------[ Overclocking ]---------------------------------------------------------------

    Motherboard:
      Motherboard ID                                     <DMI>

    BIOS Attributes:
      System BIOS date                                   12/24/2012

--------[ PCI/PnP Network ]------------------------------------------------------------

    Atheros AR5009 802.11a/g/n Wireless                   PCI
    Broadcom NetLink BCM57785 PCI-E                       PCI

1 Ответ

3 голосов
/ 22 июня 2019

Поскольку строки для удаления, похоже, не имеют ничего общего, эта длинная замена регулярного выражения может помочь:

$re = '\s+(DMI:\s+DMI BIOS Vendor|Motherboard manufacturer:\s+company name|BIOS Attributes:\s+System BIOS date)[^-]+'
$nlnl = ([Environment]::NewLine * 2)  # replace with two newlines
(Get-Content -Path 'PATH TO THE FILE' -Raw) -replace $re, $nlnl -replace 'AIDA64 Engineer', 'AIDA64 Ultimate'

Результат:

--------[ AIDA64 Ultimate ]------------------------------------------------------------

    version                                              AIDA64 Ultimate v6.00.5100/cn

--------[ System verview ]-------------------------------------------------------------

    Motherboard:
      Processor name                                    Mobile DualCore Intel

--------[ DMI ]------------------------------------------------------------------------

  [ BIOS ]

    BIOS Attributes:
      Vendor                                            Phoenix Technologies Ltd.

  [ Motherboard ]

    Motherboard:
      manufacturer                                      Intel Corp.

--------[ Overclocking ]---------------------------------------------------------------

    Motherboard:
      Motherboard ID                                     <DMI>

--------[ PCI/PnP Network ]------------------------------------------------------------

    Atheros AR5009 802.11a/g/n Wireless                   PCI
    Broadcom NetLink BCM57785 PCI-E                       PCI


Редактировать

Если вы хотите заменить AIDA64 Engineer в заголовке, а не в тексте позже, измените эту часть:

-replace 'AIDA64 Engineer', 'AIDA64 Ultimate'

на

-replace '\[ AIDA64 Engineer \]', '[ AIDA64 Ultimate ]'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...