热门标签 | HotTags
当前位置:  开发笔记 > 大数据 > 正文

批处理FOR参数/F之tokens详解

tokensx,y,m-n提取列实现代码。
(四)tokens=x,y,m-n 提取列


格式:

FOR /F "tokens=x,y,m-n" %%I IN (Command1) DO Command2

用法:

一句话总结:提取列。

通俗讲,共同提取每一行的第m小节的内容。

因此,可以用该命令来指定提取文本信息。

tokens=有时表示提取全部。

tokens=m表示提取第m列。

tokens=m,n表示提取第m列和第n列。

tokens=m-n表示提取第m列至第n列。

Tokens=*表示删除每行前面的空格。忽略行首的所有空格。

tokens=m*提取第m列以后的所有字符,星号表示剩余的字符。

tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符。

输出变量的个数由定义了的tokens决定。

在 FOR 语句中显式声明 %%i。使用tokens= 隐式声明%%j 和%%k。只要不会引起试图声明高于字母“z”或“Z”的某个变量,则使用tokens= 可以指定最多 26 个输出变量。


接着前面的例子“静夜思”。

如果我要提取第三小节“举头望明月”,如何做到?

@echo off

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

pause>nul


讲解:

首先用delims=,表示命令要用逗号作为诗句的分隔符将四句分成四小节。然后用tokens=3提取第三小节,即“举头望明月”了。

delims=和tokens=共用一对双引号,如果单独用双引号,则FOR命令返回的只能是它们之中的一个。因为在第一节说过,FOR是逐一读取命令的,将delims和tokens分开后,FOR只能一次读取一个,不能一次全部读取。


注意:

Tokens常和delims一起使用。

首先,一行内容被delims用分割符号如逗号等分隔成许多小段或小节。

然后,tokens才能提取每行之间对应的这些小段或小节——列。具体看下面例子。


例:提取前面例子文本“a.txt”中每行的第三段内容“ccc”、“kkk”、“ggg”、“考试”。

@echo off

for /f "skip=1 delims=,, tokens=3" %%i in (a.txt) do echo %%i

pause>nul

注意:为什么kkk不出现呢?


例:如何屏蔽掉文本“a.txt”中的标点符号?

@echo off

for /f "skip=1delims=,, tokens=1-4" %%i in (a.txt) do echo %%i %%j %%k %%l

pause>nul


讲解:

%%i %%j %%k %%l是输出变量,它的个数由tokens后面的(m-n)决定,一般有(n-m+1)个,但不能超过Z。

并且%%后面的字母存在先后顺序,%%a %%b是顺向,倒过来则是逆向的。

代行号的tokens=m*,星号表示m后面的所有剩余的列。

例:

for /f "tokens=*" %%i in (a.txt) do echo %%i

讲解:

没有指定具体的列,"tokens=*"将提取全部列,后面只需一个输出变量%%i。


例:

for /f "tokens=2*" %%i in (a.txt) do echo %%i %%j

讲解:

"tokens=2*"提取第二列以后的所有字符,星号表示剩余的字符。输出变量%%i对应于2的输入变量,%%j对应于星号的输入变量。

注意:

这里没有使用delisms但却以空格分隔了,是因为FOR默认空格是做分隔符的。


例:屏蔽掉“易经.txt”中的标点符号:

@echo off

for /f "tokens=1-5 delims=:," %%a in (易经.txt) do echo %%a %%b %%c %%d %%e

pause>nul

讲解:

当delims定义了两个分隔符“:”和“,”时,提取列要用到tokens。

有五个列,所以tokens要定义提取第一列至第五列,即1-5,相应地,后面需要五个输出显示变量%%a %%b %%c %%d %%e。你也可以这样修改,避免过多的变量符号【补充?】

你也可以将最后多余的句号定义为分隔符“delims=:,。”将其屏蔽掉。


练习:

1、 请简单说说tokens的作用

2、 Tokens=1,3-5后面的输出变量需要多少个?

3、 请使用tokens提取下面网页的标题《硬盘知识及故障大总汇(页 2)》:

手机,3G手机,智能手机,手机电影,手机软件,手机游戏,铃声,主题,图片,电子书,手机维修,手机大全,手机报价,下载,智能手机的测评,使用心得 硬盘知识及故障大总汇(页 2) - 电脑技术交流区 - 3g365智能手机论坛 - powered by Discuz! Archiver.mht


推荐阅读
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • SAP羞辱国产软件商:技术停在10年前
    SAP中国研究院总裁芮祥麟表示,国产软件厂商过于热衷概念炒作,技术水平停留在10年前的客户端架构水平。他认为,国内厂商推出基于SOA的产品或转型SAAS模式是不可能的,研发新架构需要时间。当前最热门的概念是云计算,芮祥麟呼吁国产厂商应该潜心研发底层架构。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文讲述了孙悟空写给白骨精的信件引发的思考和反省。孙悟空在信中对自己的行为进行了反思,认识到自己胡闹的行为并没有给他带来实际的收获。他也揭示了西天取经的真相,认为这是玉皇、菩萨设下的一场陷阱。他还提到了师傅的虚伪和对自己的实心话,以及自己作为师傅准备提拔的对象而被派下来锻炼的经历。他认为路上的九九八十一难也都是菩萨算计好的,唐僧并没有真正的危险。最后,他提到了观音菩萨在关键时刻的指导。这封信件引发了孙悟空对自己行为的思考和反省,对西天取经的目的和自己的角色有了更深入的认识。 ... [详细]
  • Windows2003 IIS上设置301定向,实现不带www域名跳转带www域名的方法
    打开IIS,建一个网站,主机头用不带www的域名,随便指向一个目录。然后在这个网站上点右键,属性--主目录--重定向到URL如图ÿ ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文讨论了读书的目的以及学习算法的重要性,并介绍了两个算法:除法速算和约瑟夫环的数学算法。同时,通过具体的例子和推理,解释了为什么x=x+k序列中的第一个人的位置为k,以及序列2和序列3的关系。通过学习算法,可以提高思维能力和解决问题的能力。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 本文详细介绍了使用 SQL Load 和 Excel 的 Concatenate 功能将数据导入 ORACLE 数据库的方法和步骤,同时介绍了使用 PL/SQL tools 将数据导入临时表的方法。此外,还提供了一个转链接,可参考更多相关内容。摘要共计XXX字。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
author-avatar
浪奔西安
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有