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

[文本处理] 如何用批处理提取文本内指定行内容?

例如:
txt文本内容如下(注意有不规则的空格,文本内还有其他好多文字,文本也比较大100多KB):

同学:a
   住址:b
北京四环路25号


   同学:cc
住址:dd

上海新区
同学 mm
住址 ee



四川朋友
fff=yyyy
pppp=uuuuu

将以上文本里的相邻行同学和住址后面的内容提取出来合并为一行并用=隔开,然后输出到另外一个文本里。
例如:
a=b
cc=dd
mm=ee
fff=yyyy
pppp=uuuuu



wankoilz的代码不错!但最前面有空格就不能正常提取了,也不能将原本已经有的
fff=yyyy
pppp=uuuuu
同时也提取出来啊,

CUer的代码运行后没有效果!不知道哪里不对?

[ 本帖最后由 wh1234567 于 2010-8-6 18:23 编辑 ]

有的“同学”后面有冒号,有的又没有,到底有没有?O(∩_∩)O~

TOP

有的“同学”后面有冒号,有的又没有,到底有没有?O(∩_∩)O~

“有的“同学”后面有冒号,有的又没有,到底有没有?O(∩_∩)O~”
同时出现2种情况

TOP

  1. gawk -F"[: ]+" "/同学/{printf $2\"=\"}/住址/{print $2}" 1.txt >2.txt
复制代码
1

评分人数

    • wh1234567: 运行后不管用,是不是代码不全啊?PB + 1

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (a.txt) do (
  3. set "str=%%i"
  4. if "!str:~0,2!"=="同学" set/p=!str:~3!=<nul
  5. if "!str:~0,2!"=="住址" echo !str:~3!
  6. ))>b.txt
复制代码

TOP

有不规则的空格,文本内还有其他好多文字,文本也比较大100多KB,为啥不能正常输出啊?

TOP

帮我解释2段代码含义

@echo off&setlocal enabledelayedexpansion
(for /f "delims=" %%i in (a.txt) do (
set "str=%%i"
if "!str:~0,2!"=="同学" set/p=!str:~3!=<nul
if "!str:~0,2!"=="住址" echo !str:~3!
))>b.txt


gawk -F"[: ]+" "/同学/{printf $2\"=\"}/住址/{print $2}" 1.txt >2.txt
这个代码是不是不全?需要加啥代码才完整?

TOP

re:
1.都是基础知识,论坛基础学习里有,牵扯太多不予解释,

2.该第三方工具还没学习,无法解释.

TOP

楼主最好直接把样本传上来看看。

TOP

不是代码不全,可能是你没有gawk.exe吧。

TOP

返回列表