[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样在分段文本中查找两个特定的行内容?

Message:
Name :  Xiaoming
Number : 0001
Chinese:89
Math:88
English: 90
Sex:  Man

Message:
Name :  XiaoHua
Number : 0002
Chinese:85
Math:89
English:  89
Sports:
Sex:  Man

Message:
Name :  XiaoFang
Number : 0003
Chinese:             90
Math:  78
English:     89
Physics:  
Sports:
Sex:  Woman
有多段类似上面格式的文本的txt文件,每一段文本除了Name:和Sex:两行文本它们之间还有多行无规律文本。
每一段文本间存在一行空行。
要从所有文本找出每一段Name后面的Sex生成一个新的new.txt
例如:
Xiaoming Man
XiaoHua Man
XiaoFang Woman

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=: " %%i in ('type *.txt') do (
  4.     if "%%i"=="Number" (
  5.         set str=%%j
  6.     ) else if "%%i"=="Sex" (
  7.         echo,!str! %%j>>New.txt
  8.     )
  9. )
复制代码

TOP

回复 1# 暮雨潇潇
下载gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )后执行:
  1. gawk -F"[ :]+" "/^Name/{a=$NF;while((getline)>0)if($1~/^Message/){next}else if($1~/^Sex$/)print a,$NF}" old.txt>new.txt
复制代码

TOP

返回列表