QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 797|回复: 7

关于sed的一个问题,在线求助!!!

[复制链接]
发表于 2005-7-1 16:43:54 | 显示全部楼层 |阅读模式
比如一个文件test中有好几个地方都有abc这个单词,但我只想把第一次出现abc的那一行改成我想要的内容比如def。该如何做呢??

sed '/abc/ s/.*/def/' test
这样的话就把所有包含abc的行都改掉了,并不是我想要的结果。
大家帮我看看啊
发表于 2005-7-1 17:15:43 | 显示全部楼层
man sed
获得参数'q'的使用方法。
你就可以达到目的。
回复

使用道具 举报

 楼主| 发表于 2005-7-1 17:21:29 | 显示全部楼层
for example?
回复

使用道具 举报

发表于 2005-7-1 17:36:49 | 显示全部楼层
好象是这样的,自己试试:
[code:1]
sed '{
s/abc//
q
}’
[/code:1]
八九不离十了,因为这个命令q我很少用。所以你最好还是看看man手册。
反正'q'的意思就是只要执行你设定的动作,就从sed中退出。于是你的目的也就达到了。
回复

使用道具 举报

 楼主| 发表于 2005-7-1 18:12:29 | 显示全部楼层
不行啊
回复

使用道具 举报

发表于 2005-7-3 12:58:04 | 显示全部楼层

Re: 关于sed的一个问题,在线求助!!!

[quote:cdae9efe50="公社乒羽冠军"]比如一个文件test中有好几个地方都有abc这个单词,但我只想把第一次出现abc的那一行改成我想要的内容比如def。该如何做呢??

sed '/abc/ s/.*/def/' test
这样的话就把所有包含abc的行都改掉了,并不是我想要的结果。
大家帮我看看啊[/quote]
sed是按行处理的命令,所以这样就会把所有行都改掉了。
如果用sed的话我想出一个较麻烦的方法:
[code:1]cat file|sed -n '/abc/p'|sed '1s/.*/def/'[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-7-4 11:47:29 | 显示全部楼层
cat file|sed -n '/abc/p'|sed '1s/.*/def/'

那个ls中的l是什么意思?
回复

使用道具 举报

发表于 2005-7-4 17:24:01 | 显示全部楼层
是数字1,不是字母l,是表示第一行的意思,这个还是不妥,等再想想 :neutral:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-9-30 12:25 , Processed in 0.038394 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表