中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-22 07:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 不用sed怎么删除空行 查看 2,074 回复 18
楼 主 不用sed怎么删除空行 发表于 2007-08-27 13:38 ·  中国 湖北 仙桃 电信
中级用户
★★
积分 301
发帖 135
注册 2007-05-15 16:49
19年会员
UID 88615
性别 男
状态 离线
sed "/^$/d" file可删除txt文件中的空行,但是不能删除由空格组成的空行,如果某一行上只有几个空格,前面的命令是不能匹配该行的.
请问不用sed怎么删除空行?
最好连有空格的空行也删除的.

[ Last edited by wert123 on 2007-8-29 at 09:18 AM ]
2 发表于 2007-08-27 14:14 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 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 发表于 2007-08-27 14:33 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
用sed是可以删除的.正则要用好点
4 发表于 2007-08-27 17:50 ·  日本 FUJITSU公司
初级用户
积分 43
发帖 19
注册 2007-08-19 08:47
18年会员
UID 95320
性别 男
状态 离线
findstr . file1>file2
5 发表于 2007-08-27 18:38 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
woshenmodoumeishuocolor]

[ Last edited by ccwan on 2007-8-27 at 06:42 PM ]
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
6 发表于 2007-08-27 18:42 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
恩。不过看都看晕了。应该很方便的。。
7 发表于 2007-08-28 18:23 ·  中国 湖北 仙桃 电信
中级用户
★★
积分 301
发帖 135
注册 2007-05-15 16:49
19年会员
UID 88615
性别 男
状态 离线
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 发表于 2007-08-28 18:30 ·  中国 湖北 仙桃 电信
中级用户
★★
积分 301
发帖 135
注册 2007-05-15 16:49
19年会员
UID 88615
性别 男
状态 离线
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 发表于 2007-08-28 18:31 ·  中国 湖北 仙桃 电信
中级用户
★★
积分 301
发帖 135
注册 2007-05-15 16:49
19年会员
UID 88615
性别 男
状态 离线
p不行的话,谁帮忙写个vbs的也可以啊
10 发表于 2007-08-28 19:12 ·  中国 北京 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
你先把"替换成其他得东西(要求在文章中没有出现)
等转换完了再替换回去。
11 发表于 2007-08-28 20:13 ·  中国 湖北 仙桃 电信
中级用户
★★
积分 301
发帖 135
注册 2007-05-15 16:49
19年会员
UID 88615
性别 男
状态 离线
knoppix7大虾能把这个P讲下吗,func1我几乎都看不懂
12 发表于 2007-08-28 20:28 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线

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 发表于 2007-08-28 20:30 ·  中国 北京 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
自我感觉没什么好讲得。很简单得BAT.......
14 发表于 2007-08-29 10:05 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
sed "/^ *$/d"
15 发表于 2007-08-30 17:16 ·  中国 湖北 仙桃 电信
中级用户
★★
积分 301
发帖 135
注册 2007-05-15 16:49
19年会员
UID 88615
性别 男
状态 离线
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里面的,
非空行前面的空格都弄掉了啊
论坛跳转: