1. 关于打印。
无论命令中选择对哪些行执行命令,sed默认会打印每一行。
a) 对于不需要执行命令的行,sed打印当前行的原始内容。
b) 对于需要执行命令的行,在命令执行完成后,sed打印被命令编辑过后的当前行的内容。
c) 如果命令本身就是打印命令p,则执行命令的过程,就是打印当前行一次。而命令执行完成后,sed又会按照b)中的描述,再打印一次当前行。因此,当前行会被打印两次。
d) 可以使用-n选项关闭默认的打印。这样的话,只有匹配了p命令的行,才会被打印。
2. 仅修改第一个(第1个)匹配的行
[root@localhost tmp]# cat test.txt
Tom is a good boy.
Alice is a good girl.
Kitty is a good girl.
a)将第一个包含girl的行中的单词Alice替换为Allen
[root@localhost tmp]# cat test.txt | sed "1,/girl/s/Alice/Allen/"
Tom is a good boy.
Allen is a good girl.
Kitty is a good girl.
b) 将第一个包含girl的行替换为Ken is a good boy
[root@localhost tmp]# cat test.txt | sed "1,/girl/c\
> Ken is a good boy"
Ken is a good boy
Kitty is a good girl.
本例的结果并不正确,不知道为什么。还望高人指点。