中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-02 11:37
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [求助]如何用sed读取文本文件指定段位置内容? 查看 1,043 回复 5
楼 主 [求助]如何用sed读取文本文件指定段位置内容? 发表于 2008-06-26 21:09 ·  中国 广西 桂林 电信
初级用户
积分 38
发帖 15
注册 2008-03-07 12:48
18年会员
UID 112277
性别 男
状态 离线
有一文本如下:
☆test01☆
AAAtest01=123456789
BBBtest01=45678900
CCCtest01=abcdef02
DDDDtest01=FFFFFF03
☆test02☆
AAAtest02=123456
BBBtest02=456789
CCCtest02=abcdef
DDDDtest02=FFFFFF
☆test03☆
AAAtest03=123456ll
BBBtest03=456789999
CCCtest03=abcdef777
DDDDtest03=FFFFFF333
☆test04☆
AAAtest04=123456006
BBBtest04=456789005
CCCtest04=abcdef007
DDDDtest04=FFFFFF0.7

我现在用sed命令行读任意一段如: sed -n "/☆test03☆/{n;p;}" aa.txt>hhh.txt 读取☆test03☆以下内容到hhh.txt,可是只能得到一行,如下:
AAAtest03=123456ll

不知道要怎样才能得到☆test03☆以下四行的内容?即hhh.txt的内容为:
AAAtest03=123456ll
BBBtest03=456789999
CCCtest03=abcdef777
DDDDtest03=FFFFFF333

谢谢!!
2 发表于 2008-06-27 04:53 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
sed -n "/☆test03☆/,${n;:,;/☆/!{p;n;T,};q}" aa.txt > hhh.txt
3 笨点的方法就用n读取下一行,然后q退出 发表于 2008-06-27 04:56 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
sed -n "/☆test03☆/{n;p;n;p;n;p;n;p;q}" aa.txt > hhh.txt
4 发表于 2008-06-27 21:59 ·  中国 广西 桂林 电信
初级用户
积分 38
发帖 15
注册 2008-03-07 12:48
18年会员
UID 112277
性别 男
状态 离线
版主!二楼和三楼的方法都用了,好像不行,输出的是空文件。。。
是不是我的sed版本不对?
5 发表于 2008-06-27 22:19 ·  中国 广西 桂林 电信
初级用户
积分 38
发帖 15
注册 2008-03-07 12:48
18年会员
UID 112277
性别 男
状态 离线
是不是" q "后面应该有个" ; "?
sed的语法对我来说实在是太复杂了,呵呵。。。。。。
谢谢lxmxn了!
6 发表于 2008-06-29 03:35 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
我测试过了,2个方法都行,2楼的方法比较灵活点。

我用的sed的版本是:windows console version
E:\xm>sed -V
GNU sed version 4.0.7
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
论坛跳转: