发布:2022/12/12 14:55:17作者:管理员 来源:本站 浏览次数:1117
用过linux系统的朋友都应该知道awk功能的强大,那windows系统DOS下有没有类似功能命令,能够获取文件中或命令输出文本中指定字段的值呢?答案是肯定的,FOR 命令就能够实现该功能。
方法/步骤
for命令在XP系统上就已经开始存在了,它的功能也很强大,可以完成很多复杂的功能。
windows下如何实现类似awk获取文件字段值功能
获取字段值只是for命令众多功能中的一个,通过加参数“/f”来实现。
windows下如何实现类似awk获取文件字段值功能
如文件students.txt内容如下:
姓名 年龄 成绩
张三 18 80
李四 19 86
要取得所有人的年龄,可以用命令:
for /f "skip=1 tokens=2" %i in (students.txt) do echo %i
“skip=1 ”表示跳过第一行,从第二行开始读取文件
“tokens=2”表示提取第二个字段值
没有指定“delims”分隔符的值,使用默认分隔符——“空格和TAB键”作为各字段的分隔符。如需指定“,”作为分隔符,只需如下输入:
for /f "skip=1 tokens=2 delims=," %i in (students.txt) do echo %i
windows下如何实现类似awk获取文件字段值功能
windows下如何实现类似awk获取文件字段值功能
如需读取记录并将每条记录按后面的格式生成一句话:XXX今年XX岁,成绩是XX。可以用命令:
for /f "skip=1 tokens=1,2*" %i in (students.txt) do echo %i今年%j岁,成绩是%k
“tokens=1,2*”表示提取第一、二字段,并将第二字段后的所有内容做为第三字段的值输出。
%i,%j,%k分别对应第一、二、三字段的值
windows下如何实现类似awk获取文件字段值功能
5
for命令还可以从命令输出的结果中提出字段值,如从进程列表中查找记事本notepad进程并获取PID的命令可如下:
for /f "usebackq tokens=2" %i in (`tasklist^|findstr notepad`) do echo %i
如需使用命令,必须使用“usebackq”参数,并且命令要用反引号符“`”(键盘上tab键上方的键)引起来。命令中如有特殊字符,需在前面加“^”字符进行字符转义。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4