批处理:FOR的参数/F之delims详解

2023-05-16

(三)delims=符号集 分隔符

 

 

格式:

FOR /F "Delims=符号集" %%I       IN (Command1)   DO Command2

用法:

一句话总结:忽略分隔符,切分字符串。

1)以文本中的标点符号来定义分隔符。分隔符通常就是空格键和跳格键。

2)被定义为分隔符的标点符号将被忽略(隐藏),如果分隔符后面还有内容,默认该分隔符与该内容将被一同忽略,除非使用tokens定义显示。因此,该命令可以用来屏蔽标点符号和提取第一列的信息。

3)被定义的分隔符前后内容将变成独立的小节(或列),这些小节可以为FOR命令编辑,比如使用tokens提取。

 

注意:

符号集,指用做分隔符的标点符号可以是一个,也可以是多个。

当delims定义多个分隔符时,符号之间不用空格,用做分隔符的空格要放到最后。

 

首先要弄清楚分隔符。分隔符就是用delims指定的标点符号了,该标点符号就是文本中的标点符号。注意:这里的分隔符并非文本中的所有标点符号,而是指被delims指定的标点符号。如下图

其次要弄清楚分节、分列。我们把每行两个分隔符之间的文字内容称为小节、列。注意:是分隔符之间,而非标点符号之间。如下图。

 

例:《易经·乾》的开头:

  乾:元,亨,利,贞。

       初九:潜龙,勿用。

       九二:见龙再田,利见大人。

       九三:君子终日乾乾,夕惕若,厉无咎。

       九四:或跃在渊,无咎。

       九五:飞龙在天,利见大人。

       上九:亢龙有悔。

       用九:见群龙无首,吉。

将该内容保存到为文本文件“易经.txt”,下面我们做实验。

 

如果使用Delims来定义分隔符,你可以使用原文中的冒号(:),写法是“Delims=:”(使用英文双引号)。冒号作为分隔符后,冒号前后的内容被分成两个小节:

 



第一小节(列)

分隔符

第二小节(列)

第一行

元,亨,利,贞。

第二行

初九

潜龙,勿用。

第三行

九二

见龙再田,利见大人。

第四行

九三

君子终日乾乾,夕惕若,厉无咎。

第五行

九四

或跃在渊,无咎。

第六行

九五

飞龙在天,利见大人。

第七行

上九

亢龙有悔。

第八行

用九

见群龙无首,吉。

备注:

默认只显示第一列

默认忽略分隔符

默认忽略第一个分隔符后的内容


 

代码:

@echo off

for /f "delims=:" %%a in (易经.txt) do echo %%a

pause>nul

 

运行结果将显示第一小节(列)的内容。

原因是没有定义显示的列,默认情况下忽略第一个分隔符(冒号)后面的内容。

 

要显示列,需要用到下节学习的tokens。如:

@echo off

for /f "tokens=1,2 delims=:" %%a in (易经.txt) do echo %%a %%b

pause>nul

 

你也可以使用冒号(:)和逗号(,),写法是“delims=:,”(使用英文双引号)。原文中的每行文字将被作为分隔符的冒号和逗号分成多个小节:(不知道百度怎么搞的,竟然说我的表格超载!省略了)


代码:

@echo off

for /f "delims=:," %%a in (易经.txt) do echo %%a

pause>nul

运行结果将显示第一小节(列)的内容。

没有定义列的时候,默认只显示第一列,忽略分隔符和第一个分隔符后的内容。

 

例如:文本“静夜思.txt”的内容是:

床前明月光,疑是地上霜,举头望明月,低头思故乡。

 

文本中有四句古诗,诗句之间用逗号分隔。古诗原本是没有标点符号的,标点符号是后人才加上去的。逗号在语文上是语气暂停的意思,其实就是用来分隔语句意思以便于阅读和理解。Delims=,的意思就是提取逗号做分隔符,并以此将诗句分成四个小列或小节。

 



第一列

分隔符

第二列

第三列

第三列

第一行

床前明月光

疑是地上霜

举头望明月,

低头思故乡。


 

如果我要用for将四句诗都显示到屏幕上,不需要任何参数即能实现:

@echo off

for /f %%i in (静夜思.txt) do echo %%i

pause>nul

 

如果我只要“床前明月光”这句话,就需要delims帮忙了:

@echo off

for /f "delims=," %%i in (静夜思.txt) do echo %%i

pause>nul

 

讲解:

delims=后面跟了一个逗号,表示用原文中的逗号作为分隔符(划分的方法)将古诗分成四个小节。默认情况下,delims只显示分隔符前的第一小节,分隔符通常被忽略掉。显示其他小节的诗句要用到列提取命令“tokens”。

 

仍用前面eol里的文本“a.txt”做试验。

例:如何只显示每行的第一个标点前的内容?

@echo off

for /f "eol=: delims=,, " %%i in (a.txt) do echo %%i

pause>nul

 

运行结果显示:

aaa

iii

eee

你好

 

注意:

文本中有英文的点号和中文的逗号,点号要放在逗号前面。

符号集中(也就是=后面的标点符号),各个符号之间没有空格。

文本中用空格分隔的,符号集里中文逗号后面只有一个空格,且必须放到最后。

用于分隔的标点符号重复的一般只取一个做代表。

for默认是以空格和,:;/等标点符号作分割符的,所以要取得整行内容通常会用"delims="这样的形式来取消for的默认分割符。

 

例:为什么第三行的iii后面的内容不见了?

@echo off

for /f    %%i in (a.txt) do echo %%i

pause>nul

讲解:

这里没有使用delim进行分隔,而带有空格的行空格后面的内容被忽略了,原因就是默认情况下,也就是没有即使没有用delims选项,for也会以空格作为分隔符,将空格后的内容屏蔽掉。

 

使用delims的目的主要是通过切分字符串获得可编辑的字符串以便于进行下一步编辑。Delims好比一把西瓜刀,文本信息就好比西瓜,使用delims这把西瓜刀将文本这个西瓜切分成许多小块,这样吃起来就方便了。

如果你想吃其中的某一块,怎么办呢?直接用刀叉tokens提取就可以了。请看下节。

 

练习:

1、请简单说说分隔符和标点符号的区别。

2、请举例说说delims的作用。

3、请用delims处理以下新闻标题:

第十六届中共中央组织结构图_中国×××第十七次全国代表大会专题_新闻中心_新浪网.mht

4、请用delims处理以下网页标题:

关闭垃圾服务让XP系统运行更顺畅运行_系统 垃圾 服务 关闭 需要 内存 这个 共享 占用_中国网管联盟.mht


转载于:https://blog.51cto.com/4011393/1894955

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批处理:FOR的参数/F之delims详解 的相关文章

随机推荐

  • libqxt编译

    一 说明 编译环境 xff1a win10 qt5 6 1 1 vs2013和libqxt源码 从git上下载 libqxt xff1a libqxt 关于libqxt的说明 xff0c 请到libqxt的官网阅读 xff0c 说着看图1
  • ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    原文 ASP NET CORE系列 五 webapi整理以及RESTful风格化 介绍 什么是RESTful xff1f 这里不多做赘述 xff0c 详情请百度 xff01 哈哈 xff0c 本来还想巴拉巴拉介绍一些webapi RESTf
  • mac系统如何生成SSH key与GitHub通信

    一 检查 SSH key 是否存在 在终端输入 xff1a ls al ssh 如果没有 xff0c 终端显示如下 xff1a No such file or directory 如果已经存在 xff0c 则会显示 id rsa 和 id
  • TortoiseSVN 忽略文件 忽略已提交文件

    主要以下两种情况 xff1a 1 首次提交就做好了忽略拦截 xff1a 项目首次提交到svn服务器的时候 xff0c 把该删的删了 xff0c 然后设置忽略规则 xff0c 就没问题了 2 提交一段时间忽然想忽略拦截 xff1a 经常碰到的
  • java里getter和setter的作用和区别是什么?

    java是典型的面向对象的编程语言 xff0c 面向对象三个特性 xff0c 继承性 xff0c 多态性 xff0c 封装性 xff0c 主要和封装性考虑 xff0c 类里面的变量不想设置成公共的类型 xff0c 但是还要给外部使用在这种实
  • FC金手指使用方法+大全

    一 文章来由 童年 小时候除了小霸王FC主机 xff0c 然后就是世嘉MD主机 xff0c 玩的好多啊 xff0c 但有些游戏一直没打穿留下遗憾 网上找金手指使用方法 xff0c 都真真假假 xff0c 鱼龙混杂 xff0c 试了很多终于得
  • shell根据关键字获取文件某一行的行号

    为什么80 的码农都做不了架构师 xff1f gt gt gt cat n 文件名 grep 39 关键字 39 awk 39 print 1 39 cat n是获取行号 xff0c 要是获取行内容 xff0c 去掉 n就可以了 转载于 h
  • VS Code编译支持C++11问题

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 如果你正确配置了 xff0c 能正确编译c 43 43 xff0c 但是发现auto等一些关键词不能使用 xff0c 那么 xff0c 请尝试如下操作 xff1a 打开ta
  • word2007自动生成参考文献引用并且右上角标注

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在写毕业论文时 xff0c 总要处理四五十篇的参考文献的引用 xff0c 本文就介绍如何快捷自动生成参考文献引用 xff0c 同时实现参考文献右上角标注 打开需要排版的论文
  • matlab练习程序(随机粒子切换特效)

    视频制作软件中一般都会有相邻帧切换的特效 xff0c 我过去用过vagas好像就有很多切换特效 我想这个也算是其中一种吧 xff0c 虽然我不确定实际中到底有没有这种切换 实际上我只是下班后太无聊了 xff0c 写着玩的 xff0c 没什么
  • PyQt4(简单信号槽)

    import sys from PyQt4 import QtCore QtGui class myWidget QtGui QWidget def init self super myWidget self init self setWi
  • 模拟京东商城登陆HttpRequest

    利用Winform HttpRequest 模拟登陆京东商城 目前只获取订单信息 xff0c 可以获取图片等其他信息 1 using System 2 using System Collections Generic 3 using Sys
  • Nginx (一)Windows下编译Nginx源码以及安装 nginx for windows方法步骤

    转载自 http apps hi baidu com share detail 11192699 content Nginx介绍 xff1a Nginx 34 engine x 34 是一个高性能的 HTTP 和反向代理服务器 xff0c
  • 我所理解的人工智能

    很多人容易把人工智能理解为机器人 机器人是人工智能的一个实际体现 人工智能应用很广泛 下面我来谈谈我的理解 人工智能可分开理解为 人工 和 智能 xff0c 即人类创造出来的智能 xff0c 从广义上来讲只要人类创造出来 xff0c 能为人
  • [Oracle数据库] 存储过程出错 :PLS-00103: 出现符号 "("在需要下列之一时: := . ) , @...

    讨论原因之一 xff1a 我写的简单存储过程如下 xff1a create or replace procedure p c v date in varchar2 200 is t count number begin select cou
  • Android读写properties配置文件

    写这篇文章之前可以成功运行 文章后就各种找不到文件 所以并没有采用此种方式 后期完善 详见下篇解决方案 配置文件读取很容易 修改需要注意权限 比如assets目录下就不允许修改 配置文件的创建 New File 命名后选择propertie
  • el-select数据过多懒加载(loadmore)

    el select数据过多处理方式 在日常项目中el select组件的使用频率是非常之高的 当数据过多时渲染时间非常长 这里提供几个处理方式 远程搜索 组件提供了远程搜索方式 也就是按照你输入的结果匹配选项 官网提供了参考示例 这里不加赘
  • Node连接Mysql遇到的坑以及踩坑总结

    前段时间做的项目中 xff0c 要用到 express 43 mysql 先看看我最初的实现代码 xff1a var conn 61 mysql createConnection host 39 example org 39 user 39
  • Cisco交换机配置新手篇之端口配置

    上回跟大家介绍了 如何正确连接交换机 xff0c 今天用一些配置片段给大家介绍一下端口的配置 鉴于网上大多数配置事例都是show run出来的结果 不利于新手对命令配置过程的了解 xff0c 所以笔者将配置片段和注意的地方都注明了一下 xf
  • 批处理:FOR的参数/F之delims详解

    xff08 三 xff09 delims 61 符号集 分隔符 格式 xff1a FOR F 34 Delims 61 符号集 34 I IN Command1 DO Command2 用法 xff1a 一句话总结 xff1a 忽略分隔符