2016-09-22 5 views
0

전원 쉘 스크립트를 사용하여 파일의 내용을 읽고 특정 유형의 단어를 선택하려고합니다. 내가 더 하류로 사용하려는 변수로 발견되는 단어를로드해야합니다.텍스트 파일에서 특정 유형의 단어를 선택하여 변수에로드하십시오.

이 내 입력 파일과 같은 모습입니다 : 내가 선택하고 싶은

{ 
    "AvailabilityZone": "ap-northeast-1b", 
    "VolumeType": "gp2", 
    "VolumeId": "vol-087238f9", 
    "State": "creating", 
    "Iops": 100, 
    "SnapshotId": "", 
    "CreateTime": "2016-09-15T12:17:27.952Z", 
    "Size": 10 
} 

특정 단어 vol-xxxxxxxx입니다. 나는이 내가 그 일을하고 어떻게 내 스크립트 How to pass a variable in the select-string of powershell

쓰기이 링크를 사용 :


$Filename = "c:\reports\volume.jason" 
$regex = "^[vol-][a-z0-9]{8}$" 
$newvolumeid=select-string -Pattern $regex -Path $filename > C:\Reports\newVolumeid.txt 
$newVolumeid 

나는 그것을 실행 만 응답은 제공하지 않습니다이 스크립트를 실행

. 어떻게 든 선택 문자열의 출력이 변수 $newvolumeid에로드되지 않은 것 같습니다.

어떻게 해결할 수 있습니까? 아니면 제가 빠진 것입니까?

PS : 위의 게시물은 약 3 세이며 작동하지 않으므로 재 게시 중입니다.

+1

이'json'에있는 파일입니다 시도 대신 정규식을 사용하여, 당신은 JSON을 구문 분석하고 사용하여 속성을 선택 할 수 있습니까? 그렇다면 [이 게시물을 체크 아웃하십시오] (http://stackoverflow.com/questions/16575419/powershell-retrieve-json-object-by-field-value) – gwillie

답변

0

JSON 개체의 속성을 읽으려고합니다.

Get-Content 'c:\reports\volume.jason' | ConvertFrom-Json | select -ExpandProperty VolumeId 
+0

괜찮습니다. 나는 정보를 깔끔하게 얻을 수있다. – Abhijit

0

$Inpath = "E:\tests\test.txt" 

$INFile = Get-Content $Inpath 

$NeedsTrimming = $INFile.Split(" ") | ForEach-Object {if ($_ -like '*vol-*'){$_}} 

$FirstQuote = $NeedsTrimming.IndexOf('"') 
$LastQuote = $NeedsTrimming.LastIndexOf('"') 

$vol = $NeedsTrimming.Substring(($FirstQuote + 1),($LastQuote - 1)) 

$vol 
+0

해결책이 효과가있을 수 있지만 오류가 발생하기 쉽고 권장되지 않습니다. –