从文本文件中选择特定类型的单词并将其加载到变量中



我正在尝试使用power shell脚本来读取文件的内容并从中选择特定类型的单词。我需要加载找到的单词作为一个变量,我打算在后面使用。

我的输入文件是这样的:

{
    "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。我用这个链接来写我的脚本如何在powershell

的select-string中传递变量

我是这样做的:


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

当我运行这个脚本时,它运行但没有给出任何响应。似乎不知何故,选择字符串的输出没有加载到变量$newvolumeid

你知道怎么解决这个问题吗?或者我错过了什么?

PS:上面提到的帖子是大约3年前的,不工作,因此我重新发布。

您正在尝试读取JSON对象的属性。不使用正则表达式,您可以解析JSON并使用以下命令选择属性:

Get-Content 'c:reportsvolume.jason' | ConvertFrom-Json | select -ExpandProperty VolumeId

试试这个

$Inpath = "E:teststest.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 

相关内容

  • 没有找到相关文章

最新更新