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

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

(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
在文本中出现了两次,那么只能显示一次

findstr提取有用信息,然后赋予变量进行对边显示就可以了

TOP

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

[ 本帖最后由 qwww1984 于 2010-3-22 22:30 编辑 ]

TOP

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

TOP

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

TOP

#4楼
   4楼兄台的代码用得好高呀,  然来  for  和findstr,   还可以这么用,  受教了
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

一个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
复制代码
1

评分人数

TOP

while(1)
{
     赞!!!!
}

TOP

4楼很强,7楼更猛!!学习了!

TOP

原帖由 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

这样的无用信息无法过滤吧,

TOP

回复 10楼 的帖子

你还是先测试一下再说吧。
在批处理这个圈子里面混,你可以不知道管理员、版主是谁,但是一定要知道terse是谁^_^

TOP

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

TOP

返回列表