首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从二进制输出中选择列和精确的字符串匹配

从二进制输出中选择列和精确的字符串匹配
EN

Stack Overflow用户
提问于 2017-11-16 09:39:25
回答 1查看 60关注 0票数 1

我在PowerShell中寻找一个等价的命令:

Linux/macOS:

代码语言:javascript
复制
cat mmls.txt | awk '{print $3}' | egrep -o '[0,9]{10}' | awk 'NR==1' | sed -e 's/^[0]*//'

源(mmls.exe的输出):

代码语言:javascript
复制
GUID Partition Table (EFI)
Offset Sector: 0
Units are in 512-byte sectors

Slot            Start        End          Length       Description
000:  Meta      0000000000   0000000000   0000000001   Safety Table
001:  -------   0000000000   0000002047   0000002048   Unallocated
002:  Meta      0000000001   0000000001   0000000001   GPT Header
003:  Meta      0000000002   0000000033   0000000032   Partition Table
004:  000       0000002048   0000616447   0000614400   Basic data partition
005:  001       0000616448   0001665023   0001048576   EFI system partition
006:  002       0001665024   0001927167   0000262144   Microsoft reserved partition
007:  003       0001927168   0300832767   0298905600   Basic data partition
008:  004       0300832768   0500117503   0199284736   Basic data partition
009:  -------   0500117504   0500118191   0000000688   Unallocated

我只想提取开始偏移没有前导零。使用awk 'NR==x‘,我选择行号。列用2-3个空格隔开.

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-16 10:33:04

下面按照您的示例选择第一个数字

代码语言:javascript
复制
Select-String -Pattern '\d{10}' -Path mmls.txt | 
    ForEach-Object { $PSItem.Matches[0].Value -replace '^0+', '' } | 
    Where-Object { $PSItem -ne '' } | 
    Select -First 1

或者更简洁一点

代码语言:javascript
复制
sls '\d{10}' mmls.txt | 
   %{$_.Matches[0].Value -replace '^0+', ''} | 
   ? {$_ -ne ''} | 
   select -f 1

替代方案

代码语言:javascript
复制
gc mmls.txt|%{($_ -split '\s+')[2]}|?{$_.Length -eq 10}|%{$_ -replace '^0+'}|?{$_ -ne ''}|select -first 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47326184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档