公社乒羽冠军 发表于 2005-7-1 16:43:54

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

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

sed '/abc/ s/.*/def/' test
这样的话就把所有包含abc的行都改掉了,并不是我想要的结果。
大家帮我看看啊

watch_1394 发表于 2005-7-1 17:15:43

man sed
获得参数'q'的使用方法。
你就可以达到目的。

公社乒羽冠军 发表于 2005-7-1 17:21:29

for example?

watch_1394 发表于 2005-7-1 17:36:49

好象是这样的,自己试试: :mrgreen:

sed '{
s/abc//
q
}’

八九不离十了,因为这个命令q我很少用。所以你最好还是看看man手册。
反正'q'的意思就是只要执行你设定的动作,就从sed中退出。于是你的目的也就达到了。

公社乒羽冠军 发表于 2005-7-1 18:12:29

不行啊 :oops:

zhy2111314 发表于 2005-7-3 12:58:04

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

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

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

公社乒羽冠军 发表于 2005-7-4 11:47:29

cat file|sed -n '/abc/p'|sed '1s/.*/def/'

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

zhy2111314 发表于 2005-7-4 17:24:01

是数字1,不是字母l,是表示第一行的意思,这个还是不妥,等再想想 :neutral:
页: [1]
查看完整版本: 关于sed的一个问题,在线求助!!!