标题: [文本处理] 批处理如何查找出txt文本里每一行中指定字符出现次数少于指定次数的行 [打印本页]
作者: Rasm 时间: 2012-7-27 13:41 标题: 批处理如何查找出txt文本里每一行中指定字符出现次数少于指定次数的行
本帖最后由 pcl_test 于 2016-7-7 23:11 编辑
其实我的大概意思
现在的文本有很多行,每行都如下示例:
chaonan\beifeng\bathome\abc123456
nanfeng\wangji\pichulizhijia\wwwwww181927121
pichulizhijia\laiwang\chengji\22feneryila
每行都有3个“\”隔开,如果哪一行没有三个"\",就导出到 文本b.txt
处理文本1.txt里的内容,如果哪一行没有三个"\",就全部导出到 文本b.txt
作者: Demon 时间: 2012-7-27 14:09
- @echo off
- (for /f "tokens=1-4 delims=\" %%a in (1.txt) do (
- if "%%d" == "" echo %%a\%%b\%%c
- )) > b.txt
- pause
复制代码
作者: bhsx 时间: 2012-7-27 16:02
本帖最后由 bhsx 于 2012-7-27 16:03 编辑
- findstr /r "^[^\\]*\\[^\\]*\\[^\\]*\\[^\\]*$" 1.txt>b.txt
复制代码
作者: apang 时间: 2012-7-27 16:11
- @echo off
- (for /f "delims=" %%a in (1.txt) do (
- for %%b in ("\%%a\..\..\..") do if "%%~nxb"=="" echo,%%a
- ))>b.txt
复制代码
作者: Rasm 时间: 2012-7-27 21:53
回复 2# Demon
存储空间不足,无法处理此命令。
内存不足。
请按任意键继续. . .
作者: Rasm 时间: 2012-7-28 21:02
回复 3# bhsx
你这个是查找,而不是排除
作者: poter 时间: 2012-7-28 21:48
用vbs比较简单,而且精确- option explicit
- dim a, b, c, d, e, ForWriting
- ForWriting = 2
- set a = createobject("scripting.filesystemobject")
- set b = a.opentextfile("1.txt")
- set e = a.createtextfile("b.txt", ForWriting)
- do until b.atendofstream
- d = b.readline
- if not func1(d) = 3 then
- e.writeline d
- end if
- loop
-
- function func1(str)
- set c = new regexp
- c.pattern = "\\"
- c.global = true
- func1 = c.execute(str).count
- end function
复制代码
作者: poter 时间: 2012-7-28 23:17
用BAT再做一个- @ECHO OFF
- Setlocal enableDelayedExpansion
- for /f "tokens=*" %%i in (1.txt) do (
- set str=%%i&set str=!str:\= \!
- for %%j in (!str!) do (
- set str1=%%j
- if "!str1:~0,1!"=="\" set /a a+=1
- )
- if not !a!==3 echo %%i>>b.txt
- set a=0
- )
复制代码
作者: bhsx 时间: 2012-7-31 09:59
要排除的加个/v参数- findstr /v /r "^[^\\]*\\[^\\]*\\[^\\]*\\[^\\]*$" 1.txt>b.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |