Board logo

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

作者: 暮雨潇潇    时间: 2023-6-6 10:21     标题: 批处理怎样在分段文本中查找两个特定的行内容?

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
作者: qixiaobin0715    时间: 2023-6-6 10:50

  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. )
复制代码

作者: hfxiang    时间: 2023-6-6 11:26

回复 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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2