Board logo

标题: [文本处理] 批处理怎么样可以按机号提取内容到新的文本? [打印本页]

作者: xymc    时间: 2015-10-7 22:44     标题: 批处理怎么样可以按机号提取内容到新的文本?

[文本处理] 批处理怎么样可以按机号提取内容到新的文本?

现在有1.txt格式如下
[A001]
2524524522        a123456
5858222257        a123456
[A002]
24542542345        a123456
25234523458        a123456
[A003]
2345345345        a123456
2345345453        a123456

怎么样可以提取A002号机的帐号到新的文本帐号.txt格式如下
24542542345----a123456
25234523458----a123456

怎么样可以用批处理实现
作者: wankoilz    时间: 2015-10-7 23:27

本帖最后由 wankoilz 于 2015-10-7 23:31 编辑

练习awk:
  1. #&cls&@gawk -f %0 1.txt >账号.txt&exit
  2. /\[A002\]/,/\[A003\]/{a[++i]=$1"----"$2}
  3. END {for(j=2;j<i;j++) print a[j]}
复制代码

作者: xymc    时间: 2015-10-7 23:37

回复 2# wankoilz


    可以用自带命令吗?
作者: wankoilz    时间: 2015-10-7 23:54

简单用bat做了一个,通用性可能不太好:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3. if %%a==[A002] set f=1
  4. if %%a==[A003] set f=0
  5. if !f!==1 if not %%a==[A002] echo %%a
  6. )
  7. pause
复制代码

作者: xymc    时间: 2015-10-8 00:00

回复 4# wankoilz


    你这个是显示A002号机一直到最后的内容了,我只要A002一台机的帐号 不要A003的内容
作者: wankoilz    时间: 2015-10-8 00:02

我这里测试没问题,用的是你发出来的内容!
作者: CrLf    时间: 2015-10-8 00:04

纯批:
  1. @echo off
  2. (for /f "tokens=1*" %%a in (a.txt) do (
  3. if %%b#==# (
  4. set "[A002]="
  5. set %%a=true
  6. ) else (
  7. if defined [A002] echo %%a----%%b
  8. )
  9. ))>b.txt
  10. pause
复制代码

作者: wankoilz    时间: 2015-10-8 00:07

本帖最后由 wankoilz 于 2015-10-8 00:09 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3. set "s=%%a"
  4. if "!s:~0,6!"=="[A002]" set f=1
  5. if "!s:~0,6!"=="[A003]" set f=0
  6. if !f!==1 if not "!s:~0,6!"=="[A002]" echo %%a
  7. )
  8. pause
复制代码
楼上的代码思路真好!
作者: 会飞的蜗牛丶    时间: 2015-10-12 11:55

inifile比较容易处理




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