标题: 如何一次查找多串字符是否存在一个文件内
[打印本页]
作者: zerocq
时间: 2007-10-16 22:15
标题: 如何一次查找多串字符是否存在一个文件内
有N个字符作为特征码
某文件内可能含有这N个字符,如何判断文件内是否出现这些字符中的"任意一个"
逐个"find 字符 文件"太慢了,如果特征码太多速度很慢
sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d test.txt&& echo %time%
命令可以一次查找多个字符,但返回的结果无法判定是否包含字符
如果文件不包含这些字符也会一样显示%time%,该怎么写呢
还有别的工具能实现这个功能吗:)
作者: lxmxn
时间: 2007-10-16 23:26
下面放搜索的字串
sed.ini:
findstr /g:sed.ini YourFileToSearch
作者: 26933062
时间: 2007-10-16 23:55
@echo off&setlocal EnableDelayedExpansion
set xs=0
set "var=sed -e "{s/aaa//;s/bbb//;s/ccc//g}" a.txt"
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do set num%%a=%%b
for /f "delims=" %%a in ('%var%') do (
set /a str+=1
call set uew=%%num!str!%%
if "!uew!"=="%%a" set /a xs=1
)
echo 共有 !xs! 行含有指定字符.
pause
作者: zerocq
时间: 2007-10-17 00:27
Quote: |
Originally posted by lxmxn at 2007-10-16 23:26:
下面放搜索的字串
sed.ini:
findstr /g:sed.ini YourFileToSearch |
|
sed.ini只放一行内容有效
多行无效??
作者: zerocq
时间: 2007-10-17 00:33
Quote: |
Originally posted by 26933062 at 2007-10-16 23:55:
[code]
@echo off&setlocal EnableDelayedExpansion
set xs=0
set "var=sed -e "{s/aaa//;s/bbb//;s/ccc//g}" a.txt"
for /f "tokens=1* delims=:" %%a in ('findstr /n . ... |
|
只能统计第一个特征码,文件中包含bbb/ccc无法统计出来:o
作者: 26933062
时间: 2007-10-17 01:16
看来只有运行3次sed了.不知道效率如何
每次替换一种字符.
作者: lxmxn
时间: 2007-10-17 01:35
Quote: |
Originally posted by zerocq at 2007-10-17 00:27:
sed.ini只放一行内容有效
多行无效?? |
|
我测试多行有效。
G:\>type sed.ini
perl
sed
first
G:\>type test.txt
this is a perl test
something to use sed
www.cn-dos.net/forum
my first important filter is the Great GNU sed
javascript
G:\>findstr /g:sed.ini test.txt
this is a perl test
something to use sed
my first important filter is the Great GNU sed
G:\>
[
Last edited by lxmxn on 2007-10-17 at 01:48 AM ]
作者: zerocq
时间: 2007-10-19 00:08
请问版主用的是什么操作系统??
作者: zerocq
时间: 2007-10-19 01:25
问题已搞定,可以结贴了
用egrep.exe可以支持同时搜索多个字符,用|来分隔字符
而且正常返回%errorlevel%
作者: lxmxn
时间: 2007-10-19 17:14
我的OS是Windows XP。