2013-05-03 6 views
1

У меня есть текстовый файл с таким содержимым:Создание массива из значений в текстовый файл с помощью PowerShell

SEGMENTS="worker01 worker02 worker03 worker04" 
WORKER_SEGMENTS="worker01 worker02 worker03 worker04" 
#SEGMENTS="worker01" 
#WORKER_SEGMENTS="worker01" 

Я прочитал этот файл с другого Powershell скрипт, и я хочу, чтобы создать массив WORKER_SEGMENTS значений , Я получил до сих пор:

$workers = Get-Content $strPath"\worker\conf\segments.conf" | Where-Object {$_ -like "*WORKER_SEGMENTS*"} 
Write-Host $workers 

Это дает:

PS Q:\mles\etl-i_test\rc> .\etl.ps1 
WORKER_SEGMENTS="worker01 worker02 worker03 worker04" #WORKER_SEGMENTS="worker01" 

я только нужен worker01, worker02, worker03, worker04 из WORKER_SEGMENTS (без ведущего #) в виде массива. Как мне это достичь?

ответ

2

Вы можете попробовать это:

Get-Content .\t.txt | 
? { $_ -like "WORKER_SEGMENTS*" } | 
% { $_ -replace '.*?"([^"]*)".*', '$1' -split " " } 

worker01 
worker02 
worker03 
worker04 

Or

Get-Content .\t.txt | 
? { $_ -like "WORKER_SEGMENTS*" } | 
% { ($_ -split '"')[1] -split ' ' } 

worker01 
worker02 
worker03 
worker04 
+0

Это, кажется, ответ, который я могу понять больше всего. Что делает '% {($ _ -split '"') [1] -split ''} 'do? – mles

+1

Он получает контент между двумя первыми двумя символами' '' (которые являются рабочими), затем он превращает имена в массив путем разбиения на пространство. Первый пример делает то же самое с использованием регулярного выражения. –

0

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

$workers = (Get-Content $strPath"\worker\conf\segments.conf" | ?{$_ -like 'Worker_Segments*'}).Split('"')[1].Split(' ') 
2

Попробуйте это:

Get-Content $strPath"\worker\conf\segments.conf" | 
    Select-String 'WORKER_SEGMENTS\s*=\s*"([^"]*)"' | 
    Foreach {$_.Matches.Groups[1].Value -split ' '} | 
    Foreach {[email protected]{}}{$ht.$_=$null} 
$ht 

Используя хэш-таблицу, мы можем легко устранить дубликаты записей.

Смежные вопросы