awk处理带有空格的字符串_如何在Windows10系统实现类似awk指令的字段分隔效果

b01be7a4bb3284c4201d906920cbe4f8.png

我们很多人可能正在使用Windows10系统,有的朋友可能会注意到这样一点:在Windows10系统里面,我们并没有发现存在Linux系统awk指令。那么,我们该如何在Windows10系统实现类似awk指令的字段分隔效果呢?接下来,小编就带大家一起分享一下如何在Windows10系统使用for指令来实现awk指令效果的具体演示操作步骤,希望能对大家有所帮助。感兴趣的朋友可以不妨亲自动手操作一下。

第一步: 按住"Win+R"快捷键,打开"运行"对话框。

da5fca2d42856767390bd715812b5e00.png

第二步:在文本输入框中,运行"cmd"指令。

fc9af40e95ee689af269dac1ca4ed8f1.png

第三步:打开cmd操作窗口。

fe1ba6a859372c49eb524f91afd44f49.png

第四步: 输入“for /?”指令再按"回车键",可查看Windows10系统内置的for指令用法帮助。

d43f1ba6506f4402bb533b601eceb2a7.png

第五步:找到关于类似for /F指令的用法示例,如下所示:FOR /F ["options"] %variable IN ('command') DO command [command-parameters]skip=n - 指在文件开始时忽略的行数。delims=xxx - 指分隔符集。这个替换了空格和制表符的默认分隔符集。tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 file-set 中使用双引号扩起文件名称。

aebf419deeac609b1ba8d0a475e77543.png

第六步:下面,我们以提取"tasklist"指令返回结果中的"映像名称"字段内容为例,如下所示:

216bfe3e2085ed56a698a0f5461a6d53.png

在cmd窗口中执行"for /F "skip=3 tokens=1 delims=, " %i in ('tasklist') do @echo %i"指令,如下所示:

9082afd275e44229b6bb6aa9a4b611c3.png

注意:
(1)delims=, "中的“delims=,”后面有且仅有一个空格符号。
(2)'tasklist'中的'符号是单引号,不是反单引号。
或者在cmd窗口中执行"for /F "usebackq skip=3 tokens=1 delims=, " %i in (`tasklist`) do @echo %i"指令,如下所示:

65adeb4255eb0ab369d3ca762b77e9fc.png

注意:
(1)delims=, "中的“delims=,”后面有且仅有一个空格符号。
(2)`tasklist`中的`符号不是单引号,是反单引号。
如上,两种方式均可以成功分隔出"tasklist"指令结果中的"映像名称"字段的内容,但需要注意的是我们使用delims=,"带空格的分隔,对于映像名称"System Idle Process"和"Secure System"等带有空格的映像名称,会被分隔成类似"System"和"Secure"名称的样式。

同理,如果我们需要分隔"tasklist"指令结果的"会话名称"内容,如下所示:

25cf56a30b9fa4039d5d58f79bd03868.png

执行指令以下两种方式:方式一: for /F "usebackq skip=3 tokens=3 delims=, " %i in (`tasklist`) do @echo %i

683257d74bff8bfa6ba6b6270dd379cf.png

或者方式二:for /F "skip=3 tokens=3 delims=, " %i in ('tasklist') do @echo %i

f1f24ca6b88809b2ff1fa6c173cf5193.png

注意:由于我们使用delims=,"带空格的分隔,所以对于如下结果内容:

534c969bc10ee29a8d20f2c66494588f.png

上述"Secure System 56 Services 0 25,836 K" 我们再使用tokens=3 ,分隔出第三个字段,所对应结果内容是字符串56,而不是"Services"。所以,在处理带空格的字符串结果时,同样也会存在不正确的地方。注:本文只起到一个抛砖引玉的作用,对于本文涉及到的带空格字符串情况,会出现结果错误的问题,需要研究优化处理。
本文由一米微读原创,欢迎关注,带你一起长知识!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值