2012-05-18 3 views
1

PowerShell에서 일부 문자열 데이터를 구문 분석하는 데 문제가있어 약간의 도움이 필요합니다. 기본적으로 나는 객체를 출력하지 않는 애플리케이션 명령을 가지고있다. 오히려 문자열 데이터이다.Powershell - 문자열 검색, 여분의 공백 제거, 두 번째 필드 인쇄

a = is the item I'm searching for 
b = is the actual ouput from the command 
c = replaces all the excess whitespace with a single space 
d = is supposed to take $c "hostOSVersion 8.0.2 7-Mode" and just print "8.0.2 7-Mode" 

그러나 $ d는 작동하지 않고 단지 $ c와 같은 값을 인쇄합니다. 나는 유닉스 사람이고 이것은 하나의 awk 문장에서 쉬울 것이다. 하나의 명령에서이 작업을 수행하는 방법을 알고 있다면 좋을 것입니다. 아니면 아래의 $ d 구문에 잘못된 점을 알려주십시오.

$a = "hostOSVersion" 
$b = "hostOSVersion       8.0.2 7-Mode" 
$c = ($a -replace "\s+", " ").Split(" ") 
$d = ($y -replace "$a ", "") 

답변

0

그럼 당신은 정확한 패턴으로 주변 futz에해야 할 수도 있습니다,하지만 한 가지 방법은 정규식입니다 :

$b = "hostOSVersion       8.0.2 7-Mode" 
$b -match '(\d.*)' 
$c = $matches[1] 

당신이 정말로 -replace 함께 oneline 싶었다면 :

$($($b -replace $a, '') -replace '\s{2}', '').trim() 
+0

당신에게 선생님 감사 생산할 것이다됩니다를 알 수 있습니다, 그리고 대신 $ A

$c = ($b -replace "\s+", " ").Split(" ") 

의 $ B 형 변수를 참조 두 번째 단 하나의 라이너가 트릭을 만들었습니다. – user1403741

0

귀하의 라인

$c = ($a -replace "\s+", " ").Split(" ") 

의 hould, 당신은 $ D의 출력

hostOSVersion 
8.0.2 
7-Mode 

$d[1..2] -join ' ' 같은 문이 8.0.2 7-Mode