![b01be7a4bb3284c4201d906920cbe4f8.png](https://i-blog.csdnimg.cn/blog_migrate/cf62cb15e0a462c74d6fca78dbf86e93.jpeg)
我们很多人可能正在使用Windows10系统,有的朋友可能会注意到这样一点:在Windows10系统里面,我们并没有发现存在Linux系统awk指令。那么,我们该如何在Windows10系统实现类似awk指令的字段分隔效果呢?接下来,小编就带大家一起分享一下如何在Windows10系统使用for指令来实现awk指令效果的具体演示操作步骤,希望能对大家有所帮助。感兴趣的朋友可以不妨亲自动手操作一下。
第一步: 按住"Win+R"快捷键,打开"运行"对话框。
![da5fca2d42856767390bd715812b5e00.png](https://i-blog.csdnimg.cn/blog_migrate/89d9c0b4446e8bde0c5a7c327e7c2e69.jpeg)
第二步:在文本输入框中,运行"cmd"指令。
![fc9af40e95ee689af269dac1ca4ed8f1.png](https://i-blog.csdnimg.cn/blog_migrate/03b4ea05cf93d5c58c03438213c792a1.jpeg)
第三步:打开cmd操作窗口。
![fe1ba6a859372c49eb524f91afd44f49.png](https://i-blog.csdnimg.cn/blog_migrate/f46ca1f91f395b9061cbfa531b8fbe2f.jpeg)
第四步: 输入“for /?”指令再按"回车键",可查看Windows10系统内置的for指令用法帮助。
![d43f1ba6506f4402bb533b601eceb2a7.png](https://i-blog.csdnimg.cn/blog_migrate/7c11316b26c18d56c4fd50228ec39dec.jpeg)
第五步:找到关于类似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](https://i-blog.csdnimg.cn/blog_migrate/0a82f94bda17e8193b6a686192276175.jpeg)
第六步:下面,我们以提取"tasklist"指令返回结果中的"映像名称"字段内容为例,如下所示:
![216bfe3e2085ed56a698a0f5461a6d53.png](https://i-blog.csdnimg.cn/blog_migrate/97b0b7dae479f7b86fb2d8fc1a3e09c8.jpeg)
在cmd窗口中执行"for /F "skip=3 tokens=1 delims=, " %i in ('tasklist') do @echo %i"指令,如下所示:
![9082afd275e44229b6bb6aa9a4b611c3.png](https://i-blog.csdnimg.cn/blog_migrate/f1f9ec35de2623686c03c7ff48a97d5e.jpeg)
注意:
(1)delims=, "中的“delims=,”后面有且仅有一个空格符号。
(2)'tasklist'中的'符号是单引号,不是反单引号。
或者在cmd窗口中执行"for /F "usebackq skip=3 tokens=1 delims=, " %i in (`tasklist`) do @echo %i"指令,如下所示:
![65adeb4255eb0ab369d3ca762b77e9fc.png](https://i-blog.csdnimg.cn/blog_migrate/f80635048ff100be61df806e0784e9a8.jpeg)
注意:
(1)delims=, "中的“delims=,”后面有且仅有一个空格符号。
(2)`tasklist`中的`符号不是单引号,是反单引号。
如上,两种方式均可以成功分隔出"tasklist"指令结果中的"映像名称"字段的内容,但需要注意的是我们使用delims=,"带空格的分隔,对于映像名称"System Idle Process"和"Secure System"等带有空格的映像名称,会被分隔成类似"System"和"Secure"名称的样式。
同理,如果我们需要分隔"tasklist"指令结果的"会话名称"内容,如下所示:
![25cf56a30b9fa4039d5d58f79bd03868.png](https://i-blog.csdnimg.cn/blog_migrate/2de0809d4335e48af9e6e83c0529bfaa.jpeg)
执行指令以下两种方式:方式一: for /F "usebackq skip=3 tokens=3 delims=, " %i in (`tasklist`) do @echo %i
![683257d74bff8bfa6ba6b6270dd379cf.png](https://i-blog.csdnimg.cn/blog_migrate/9cbc196b4942d4def9d2d52e6eed3b5e.jpeg)
或者方式二:for /F "skip=3 tokens=3 delims=, " %i in ('tasklist') do @echo %i
![f1f24ca6b88809b2ff1fa6c173cf5193.png](https://i-blog.csdnimg.cn/blog_migrate/64e6d08e9045741bb97e77471595e680.jpeg)
注意:由于我们使用delims=,"带空格的分隔,所以对于如下结果内容:
![534c969bc10ee29a8d20f2c66494588f.png](https://i-blog.csdnimg.cn/blog_migrate/7507b63b82b7542e5b781832f8bb291e.jpeg)
上述"Secure System 56 Services 0 25,836 K" 我们再使用tokens=3 ,分隔出第三个字段,所对应结果内容是字符串56,而不是"Services"。所以,在处理带空格的字符串结果时,同样也会存在不正确的地方。注:本文只起到一个抛砖引玉的作用,对于本文涉及到的带空格字符串情况,会出现结果错误的问题,需要研究优化处理。
本文由一米微读原创,欢迎关注,带你一起长知识!