2017-09-29 109 views
1

我的文件如下所示。我只需要列表中的carId列表。从输出中拆分的PowerShell命令

我试图运行命令:

Get-Content Carlist.txt | select-string carId | $_.split(':')[2].split(' ') 

Attachments  : {} 
State   : available 
accessory   : {} 
carId   : 53se 
carType  : bmw 

Attachments  : {} 
State   : available 
accessory   : {} 
carId   : 23nu 
carType  : audi 

Attachments  : {} 
State   : available 
accessory   : {} 
carId   : 94it 
carType  : merc 

回答

0

第二个命令的结果是一个列表,而在第三你要作用于该列表的单个元素。要做到这一点,你需要Foreach-Object。 所以,你的代码变得(包括一些修正):

Get-Content Carlist.txt | select-string carId | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } 
+0

其投掷的错误..我不知道为什么我们需要一个“替换”命令,因为我需要拆分子串类似的东西.. PS C:\ Users \ Admin \ Desktop> Get-Content car.txt |选择串carId carId:53se carId:23nu carId:94it我需要53se 23nu 94it只有 – gary

+0

我收到此错误方法调用失败,因为[Microsoft.PowerShell.Commands.MatchInfo]不包含名为方法“分裂”。 在线:1 char:62 + ... t-string carId | Foreach-Object {$ _。split(':')[1] -replace'\ s',''} + ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:MethodNotFound – gary

+0

我忘了在我的第一个答案中添加ToString()修复。我使用替换,因为拆分的输出取决于文件中的空格,这是不理想的 – rzippo