Выберите 5 строк после того, как строка соответствует, но уникальная - PullRequest
0 голосов
/ 17 января 2019

Я хочу проанализировать текстовый файл конфигурации устройства и выбрать 10 строк после сопоставления строки. Файл конфигурации имеет один и тот же интерфейс, настроенный в разных местах конфигурации, поэтому, когда я запустил свой сценарий PowerShell, он обнаружил два найденных двух дублирующих интерфейса, которые мне не нужны. Я только хочу, чтобы скрипт возвращал вывод только уникального интерфейса.

$OSPF_Interfaces = Select-String -Path $File -Pattern "no\spassive-interface\s(Port-channel|TenGigabitEthernet|GigabitEthernet)" |
                   select -ExpandProperty line |
                   Select-Object -Unique

$Active_Interface = $OSPF_Interfaces -replace " no passive-interface ", "interface " |
                    Select-Object -Unique

Вывод $Active_Interface правильный

interface GigabitEthernet1/1
interface GigabitEthernet1/2
interface GigabitEthernet1/3

так что теперь я хочу проанализировать файл конфигурации, чтобы найти совпадение для каждого интерфейса в $Active_interface и выбрать 2 строки для каждого совпадения интерфейса:

foreach ($item in $Active_Interface) {
     $Authenticated_Interface = Select-String -Path $File -Pattern "^$item" -Context 0,2 |
                                Select -Unique
     $Authenticated_Interface
}

Приведенный выше код работал, но он вернул повторяющееся совпадение, как показано ниже:

interface GigabitEthernet1/1
description link to building 1
Medical
interface GigabitEthernet1/1
description link to building 1
Medical
interface GigabitEthernet1/2
description link to building 2
Garage
interface GigabitEthernet1/2
description link to building 2
Garage
interface GigabitEthernet1/3
description link to building 3
Gate
interface GigabitEthernet1/3
description link to building 3
Gate

Мне не нужен дубликат, но я не знаю, как заставить его возвращать только одну уникальную запись для каждой, как показано ниже:

interface GigabitEthernet1/1
description link to building 1
Medical
interface GigabitEthernet1/2
description link to building 2
Garage
interface GigabitEthernet1/3
description link to building 3
Gate
...