标题: [文本处理] 批处理如何统计文本中的空行个数(如何判断空行)? [打印本页]
作者: wnc1988 时间: 2009-11-5 10:17 标题: 批处理如何统计文本中的空行个数(如何判断空行)?
假如有下面的文本1.txt:
adas
ss
dsa
ds
ds
fedf
如何算出它包含几个空行?- @echo off&setlocal enabledelayedexpansion
- set /a n=0
- for /f "delims=" %%i in (1.txt) do (
- set str=%%i
- if "!str!"=="" (set /a n+=1)
- )
-
- echo 空行个数为: !n!
- pause
复制代码
上面是我写的简单代码,是不是if后面的判断条件错了呢?
下面的两位都能解决统计空行个数的问题,谢谢了。不过我最主要的目的是
如果某一行是空行,那么输出这个空行后面的那一行。也就是说我想得到的是
dsa
ds
fedf
可能麻烦,不过这是我学习过程中遇到的一个真实的问题。
[ 本帖最后由 wnc1988 于 2009-11-5 16:19 编辑 ]
作者: vsbat 时间: 2009-11-5 12:22 标题: 统计文本中的空行个数
- @echo off
- set a=0
- set b=0
- for /f "delims=" %%j in (1.txt) do set /a b+=1
- for /f "delims=" %%i in ('findstr /n ".*" 1.txt') do set /a a+=1
- set /a k=%a%-%b%
- echo 空行数:%k%
- pause>nul
复制代码
利用 findstr / n 与 纯 for 读取的差值
空行指无任何字符(包括空格)的行------
好用不?
[ 本帖最后由 vsbat 于 2009-11-5 12:28 编辑 ]
作者: zqz0012005 时间: 2009-11-5 12:33
- findstr "^$" 1.txt | find /c /v ""
复制代码
作者: vsbat 时间: 2009-11-5 20:34
- @echo off
- setlocal enabledelayedexpansion
- set a=0
- for /f "delims=" %%i in ('findstr /n "^$" 1.txt') do (set t=%%i&set t=!t::=!&set /a t+=1
- for /f "delims=" %%j in ('findstr /n ".*" 1.txt') do set /a a+=1&set k=%%j&set k=!k:*:=!&if !a! equ !t! echo !k!
- set a=0)
- pause>nul
复制代码
上面这个是 显示 空行下一行内容的代码-----
for /f "delims=" %%i in ('findstr /n "^$" 1.txt') do (set t=%%i&set t=!t::=!&echo 第!t!行是空行)
这一句是找到 空行的行号(findstr /n 情况下) 你要是在想用什么 别的命令 -----在它的基础上改
注:感谢zqz 斑竹的 findstr "^$" 1.txt 的高效代码,这一句就是 查找空行
[ 本帖最后由 vsbat 于 2009-11-5 20:35 编辑 ]
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |