Board logo

标题: [文本处理] 批处理怎样解析文本中指定的字符串并过滤重复行? [打印本页]

作者: qwww1984    时间: 2010-3-22 22:19     标题: 批处理怎样解析文本中指定的字符串并过滤重复行?

(void *)qwww 信息1
F:\svn\1234\aaa.c(1234)  无关信息1
F:\svn\1234\aaa.c(1234)  无关信息2

struct * (int a , int b)  信息2
无关信息若干
F:\svn\1234\bbb.c(1234)  无关信息3
F:\svn\567\abc.c(5678)  无关信息4
F:\svn\1234\5678\vvv.c(1234)  无关信息5

如何提取出F:\svn开头的所有,c文件(需要包括文件的绝对路径),用变量保存并显示
如:F:\svn\1234\aaa.c
F:\svn\1234\bbb.c
……
要求:同样的文件只能echo一次,如:
F:\svn\1234\aaa.c
在文本中出现了两次,那么只能显示一次
作者: sgaizxt001    时间: 2010-3-22 22:23

findstr提取有用信息,然后赋予变量进行对边显示就可以了
作者: qwww1984    时间: 2010-3-22 22:28

没看太明白 我菜鸟一个
怎么才能让他只显示一次呢?

[ 本帖最后由 qwww1984 于 2010-3-22 22:30 编辑 ]
作者: yangfengoo    时间: 2010-3-22 22:48

  1. @echo off
  2. for /f "tokens=1* delims=." %%a in ('findstr ".c(" 1.txt') do for %%c in ("%%a.c") do if not defined %%~nc echo.%%~c&set %%~nc=1
  3. pause
复制代码

作者: bat007    时间: 2010-3-22 23:32

  1. gawk -F( "/F:\\svn\\/{a[$1]=$1}END{for(i in a)print i}" a.txt
复制代码

作者: x9tiancmd    时间: 2010-3-23 00:58

#4楼
   4楼兄台的代码用得好高呀,  然来  for  和findstr,   还可以这么用,  受教了
作者: terse    时间: 2010-3-23 02:51

一个FOR 行不
  1. @echo off
  2. for /f "delims=(" %%i in (a.txt) do if not defined %%i if "%%~xi" equ ".c" echo %%i&set "%%i=i"
  3. pause
复制代码

作者: qwww1984    时间: 2010-3-23 20:22

while(1)
{
     赞!!!!
}
作者: qwww1984    时间: 2010-3-23 20:33

4楼很强,7楼更猛!!学习了!
作者: yangfengoo    时间: 2010-3-24 00:10

原帖由 terse 于 2010-3-23 02:51 发表
一个FOR 行不@echo off
for /f "delims=(" %%i in (a.txt) do if not defined %%i if "%%~xi" equ ".c" echo %%i&set "%%i=i"
pause


如果一个for
struct * (int a , int b)  信息2

这样的无用信息无法过滤吧,
作者: bat007    时间: 2010-3-24 09:38     标题: 回复 10楼 的帖子

你还是先测试一下再说吧。
在批处理这个圈子里面混,你可以不知道管理员、版主是谁,但是一定要知道terse是谁^_^
作者: caruko    时间: 2010-3-25 18:19

7楼确实很强的代码,....
代码后面有检查后缀是否.c 的




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