LINUX
Linux复习归纳6~
sed
sed是一种流编辑器,能够完美配合正则表达式。
它会先把要处理的行存储在临时缓冲区,接着用sed命令处理缓冲区的内容。处理完成后把缓冲区的内容输出到屏幕,接着处理下一行直到文件末尾。
sed常见的参数:
-n //取消默认的完整输出,只要需要的
-e //允许多项编辑
-i //修改文件内容
-r //不需要转义
sed常见命令:
a\ 在当前行最后添加一行或多行(多行除了最后一行外,其余每行末尾都要加\)
c\ 此符号后的内容替换当前行的内容(多行除了最后一行外,其余每行末尾都要加\)
i\ 当前行之前插入一行或多行(多行除了最后一行外,其余每行末尾都要加\)
& 代表上次匹配的结果
p //输出
d //删除
= //打印匹配行的行号
l //列出非打印字符
$ //最后一行
n //读入下一个输入行,并从下一条命令开始对其处理
r //从文件中读取输入行到匹配行后,仅用于显示
w //从文件中读取输入行到匹配行后,会实际写入
! //对所选行以外的所有行应用命令
s //用一个字符串替换另一个
y //将字符替换为另一个字符
g //在行内进行全局替换
h //把模式空间的内容复制到缓冲区
H //把模式空间的内容追加到缓冲区
g //把缓冲区的内容复制到模式空间
G //把缓冲区的内容追加到模式空间
x //交换缓冲区和模式空间的内容
q //结束退出
//关于命令匹配、删除、替换等操作的范围可以用数字、正则表达式或者两者的组合表示
例子:
1. 打印文件第一行:
$ sed -n '1p' 文件名
2. 打印1-3行
$ sed -n '1,3p' 文件名
3. 打印所有包含特定字符串"string"的行
$ sed -n '/string/p' 文件名
4. 打印从包含"string1"的行到包含"string2"的所有行
$ sed -n '/string1/,/string2/p' 文件名
5. 打印包含"string"的行号
$ sed -n '/string/=' 文件名
6. 打印包含"string"的行和行号
$ sed -n -e '/string/p' -e '/string/=' 文件名
7. 打印最后一行
$ sed -n '$p' 文件名
8. 用字符串"string1"替换为"string2"
$ sed -i 's/string1/string2/g' 文件名 (其中s为替换,g为全部替换)
9. 文件第一行添加"string1",最后一行添加"string2"
$ sed -i -e '1i string1' -e '$a string2' 文件名 (1代表第一行,$代表最后一行)
10. 文件第1-4行每行下面添加"string"
$ sed -i '1,4a string' 文件名
11. 删除从1-3行
$ sed -i '1,3d' 文件名
12. 删除从'string1'到第10行的所有行
$ sed -i '/string1/,10d' 文件名
13. 将a.txt文件中的内容显示到包含“string”的行后
$ sed '/sring/ r a.txt' 文件名
14. 将a.txt文件中的内容写入到包含“string”的行后
$ sed '/sring/ w a.txt' 文件名
如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢