中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 22:52
48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 不用sed怎么删除空行
可打印版本  2,205 / 18
第1楼 wert123 发表于 2007-08-27 13:38
中级用户 发帖 135 积分 301
不用sed怎么删除空行
sed "/^$/d" file可删除txt文件中的空行,但是不能删除由空格组成的空行,如果某一行上只有几个空格,前面的命令是不能匹配该行的.
请问不用sed怎么删除空行?
最好连有空格的空行也删除的.

[ Last edited by wert123 on 2007-8-29 at 09:18 AM ]
第2楼 knoppix7 发表于 2007-08-27 14:14
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
@echo off
set runtimes=0
FOR /F "delims=" %%i in (myfile.txt) do (
call :func1 "%%i"
)
pause
pause
pause
:func1
set /a runtimes=%runtimes%+1
set EL=1
set T1=%1
set T1=%T1: =%
if NOT %T1%=="" set EL=0
if %EL%==0 (
if NOT %runtimes%==1 echo+>>done.txt
set /p null=%1<nul>>done.txt
)
goto :EOF


文本中有"的话就要少东西了。。。
第3楼 wudixin96 发表于 2007-08-27 14:33
银牌会员 发帖 931 积分 1,928
用sed是可以删除的.正则要用好点
第4楼 halulove 发表于 2007-08-27 17:50
初级用户 发帖 19 积分 43
findstr . file1>file2
第5楼 ccwan 发表于 2007-08-27 18:38
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
woshenmodoumeishuocolor]

[ Last edited by ccwan on 2007-8-27 at 06:42 PM ]
第6楼 knoppix7 发表于 2007-08-27 18:42
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
恩。不过看都看晕了。应该很方便的。。
第7楼 wert123 发表于 2007-08-28 18:23
中级用户 发帖 135 积分 301
Originally posted by knoppix7 at 2007-8-27 02:14 PM:
@echo off
set runtimes=0
FOR /F "delims=" %%i in (myfile.txt) do (
call :func1 "%%i"
)
pause
pause
pause
:func1
set /a runtimes=%runtimes%+1
set EL=1
set T1=%1
set T ...


谢谢,knoppix7真厉害啊
文本中有"的话就怎么会要少东西呢?能改进吗
顺便问下,echo+是什么意思啊.除此外其它地方
几乎也看不懂,麻烦帮忙讲解下吧.

[ Last edited by wert123 on 2007-8-28 at 06:36 PM ]
第8楼 wert123 发表于 2007-08-28 18:30
中级用户 发帖 135 积分 301
Originally posted by wudixin96 at 2007-8-27 02:33 PM:
用sed是可以删除的.正则要用好点


wudixin96老兄你也帮下忙吧,我在打东西,
打印室里面没有sed,我也想用,要下载,打印员
又怕sed是毒,打出来都有很多echo.一样的东西,乱费读书钱啊.

[ Last edited by wert123 on 2007-8-28 at 06:35 PM ]
第9楼 wert123 发表于 2007-08-28 18:31
中级用户 发帖 135 积分 301
p不行的话,谁帮忙写个vbs的也可以啊
第10楼 knoppix7 发表于 2007-08-28 19:12
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
你先把"替换成其他得东西(要求在文章中没有出现)
等转换完了再替换回去。
第11楼 wert123 发表于 2007-08-28 20:13
中级用户 发帖 135 积分 301
knoppix7大虾能把这个P讲下吗,func1我几乎都看不懂
第12楼 slore 发表于 2007-08-28 20:28
铂金会员 发帖 2,478 积分 5,212

Dim objFSO,objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("Test.txt",1)
Dim StrLine,OutStr
Do Until objFile.AtEndOfStream
StrLine = objFile.ReadLine
If Replace
(StrLine," ","") <> "" Then OutStr = OutStr & StrLine & vbCrLf
Loop
objFile.Close
Set
objFile = objFSO.OpenTextFile("Out.txt",2,1)
objFile.Write OutStr
objFile.Close
Set
objFile = Nothing
Set
objFSO = Nothing


PS:文本最后会产生个回车,我没有处理。。。自己取下
第13楼 knoppix7 发表于 2007-08-28 20:30
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
自我感觉没什么好讲得。很简单得BAT.......
第14楼 wudixin96 发表于 2007-08-29 10:05
银牌会员 发帖 931 积分 1,928
sed "/^ *$/d"
第15楼 wert123 发表于 2007-08-30 17:16
中级用户 发帖 135 积分 301
Originally posted by knoppix7 at 2007-8-27 02:14 PM:
@echo off
set runtimes=0
FOR /F "delims=" %%i in (myfile.txt) do (
call :func1 "%%i"
)
pause
pause
pause
:func1
set /a runtimes=%runtimes%+1
set EL=1
set T1=%1
set T ...


能不能改进下啊,大虾.我昨天用的时候把txt里面的,
非空行前面的空格都弄掉了啊
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023