隐藏

windows下如何用for实现类似awk获取文件字段值功能

发布: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键上方的键)引起来。命令中如有特殊字符,需在前面加“^”字符进行字符转义。