中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 05:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教SED问题 查看 884 回复 4
楼 主 请教SED问题 发表于 2008-07-20 16:53 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
wget -q -O "test1.log" http://download.gna.org/grub4dos/
wget -q -O "test2.log" http://nufans.net/grub4dos/
上面命令两log文件

@echo off
sed -e :a -e "s/<*>//g;/</N;//ba;/.zip/!d;s/$/\r/;s/^*//" "test1.log">"列表1.log"
rem /.zip/!d 后缀.zip行
rem -e :a -e "s/<*>//g;/</N;//ba; 移除大部分的HTML标签(包括跨行标签)
rem s/^*//; 将每一行前导的“空白字符”(空格,制表符)删除使之左对齐
rem s/*$//; 将每一行拖尾的“空白字符”(空格,制表符)删除
rem s/$/\r/ 换行吧
pause

test1.log 处理后会的到下面:

grub4dos-0.4.3-2007-03-10.zip 10-Mar-2007 20:41 243k
grub4dos-0.4.3-2007-03-16.zip 16-Mar-2007 06:03 243k
grub4dos-0.4.3-2007-03-20.zip 20-Mar-2007 10:02 242k
..............

能否用同一命令使test2.log处理后的 列表2.log 和 列表1.log一样的格式
怎么用SED得到第一列呢? 我试着用 :a; s/\( .*\)*/\1/; ta 不行
请教了
简单!简单!再简单!
2 发表于 2008-07-20 18:44 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
测试下可能要分2步才完成
sed "s/<A HREF/\n<A HREF/g" "test2.log">tmp.log
sed -e :a -e "s/<*>//g;/</N;//ba;/.zip/!d;s/$/\r/" "tmp.log">"列表2.log"


我之前写的Grub_Update用的是http://grub4dos.jot.com里的列表
最近很长一段时间这个连接已失效了
第一高手 第二高手

3 发表于 2008-07-20 18:54 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
http://nufans.net/grub4dos是Climbing创建的吧,看看Climbing私藏的东东
http://nufans.net/grub4dos/Climbing/
第一高手 第二高手

4 发表于 2008-07-20 22:15 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
谢fastslz兄 先用着吧
简单!简单!再简单!
5 发表于 2008-07-21 01:51 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
sed "s/<br>/\n/g; s/<*>//g;" test2.log | sed " /:/!d; s/^*//; s/\(.*\) \(*$\)/\2                                                         \1/;s/^\(.\{58\}\)*\(*\)*\(*\)*\(*\)/\1 \2 \t\3 \t\4/"


test2.log 需要是ANSI编码才好在CMD下处理。

PS: 这个是目前写得最长的sed online code。
论坛跳转: