sed 命令是在线编辑器,对所编辑的文件每次只是处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后接着处理下一行直到文件的结尾。sed命令的处理一般不会对原有文件进行修改(当加上选项 -i时例外),只是把处理的结果显示到屏幕而已。
这里先建立一些文件如下:
test文件:
Hello!
lc is me,welcome to my blog.
Today is a special day
Thank you
end
test.sed文件:
s/is/was/g
一、sed命令的格式:
sed [-efinr] 'command' file
选项的意义:
-e 可以同时执行多个sed命令,多个命令用空格来分开
例子:sed -e '1d' -e 's/is/was/g' test
输出结果:
lc was me,welcome to my blog.
Today was a special day
Thank you
end
-f 处理文件里的sed的命令
例子:sed -f test.sed test
输出结果:
Hello!
lc was me, welcome to my blog.
Today was a special day
Thank you
end
-i操作过后,直接修改文件
例子:sed -i 's/is/was/g' test
输出结果:
Hello!
lc was me, welcome to my blog.
Today was a special day
Thank you
end
-n只显示被修改过的行,一般与“command:p”一起使用
例子:sed -n '/is/p' test
输出结果:
lc is me, welcome to my blog.
Today is a special day
-r支持扩展的正则表达式
常用的command:
a新增,把紧接在a后面的字符串加到所处理行的下一行
例子:sed '$a bye' test
Hello!
lc is me, welcome to my blog.
Today is a special day
Thank you
end
bye
c取代,用紧接在c后面的字符串替代所编辑的行
例子:sed '1c hi' test
输出结果:
hi
lc is me, welcome to my blog.
Today is a special day
Thank you
end
d删除,不输出删除的行
例子:sed '1d ' test
输出结果:
lc is me, welcome to my blog.
Today is a special day
Thank you
end
i插入,把紧接在i后面的字符串加到所处理行的上一行
例子:sed '1i ok ' test
输出结果:
ok
Hello!
lc is me, welcome to my blog.
Today is a special day
Thank you
end
p 输出,把选择的行输出
例子:sed -n '1p' test
输出结果:
Hello!
s替换,格式:s/old/new/g
例子:sed 's/is/was/' test
输出结果:
Hello!
lc was me, welcome to my blog.
Today was a special day
Thank you
end