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

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

比如一个文件test中有好几个地方都有abc这个单词,但我只想把第一次出现abc的那一行改成我想要的内容比如def。该如何做呢??

sed '/abc/ s/.*/def/' test
这样的话就把所有包含abc的行都改掉了,并不是我想要的结果。
大家帮我看看啊
man sed
获得参数'q'的使用方法。
你就可以达到目的。
for example?
好象是这样的,自己试试:
[code:1]
sed '{
s/abc//
q
}’
[/code:1]
八九不离十了,因为这个命令q我很少用。所以你最好还是看看man手册。
反正'q'的意思就是只要执行你设定的动作,就从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]
cat file|sed -n '/abc/p'|sed '1s/.*/def/'

那个ls中的l是什么意思?
是数字1,不是字母l,是表示第一行的意思,这个还是不妥,等再想想 :neutral: