常用功能 :增删改查 ,过滤 取行
语法格式 sed 选项 sed命令 输入文件
sed命令执行流程
概括流程:sed软件是从文件或者管道读取一行,输出一行,再读取一行,再处理一行.......
增
1) a 追加文本到指定的行后
2) i 插入文本到指定行前
a
单行增加
多行增加
i
d
sed 机制,对匹配feixue到后面两行进行操作,如果在面没有匹
sed 软件可以对单行或多行进行处理,如果在sed命令前面不指定地址范围,那么默认会匹配所有行
用法:n1【,n2】 {sed-command}
例子:
10 {sed-command} 对第10行进行操作
10,20 {sed-commands} 对10到20行进行操作,包括10行,20行
10,+20 {sed-commands} 对10行到30行进行操作,包括10行,30行
1~2 {sed-commands} 对1,3,5,7,_行进行操作
10,${sed-commands} 对10行到最后一行进行操作,包括第10行
/oldboy/ {sed-commands} 对匹配oldboy的行操作
/oldboy/,/Alex/ {sed-commands} 对匹配oldboy的行到匹配Alex的行操作
/oldboy/ ,$ {sed-commands} 对匹配oldboy的行到最后一行的操作
/oldboy/,10 {sed-commands} 对匹配oldboy的行到第10行的操作。注意,如果前10行没有匹配到oldboy,sed软件会显示10行以后匹配oldboy的行,如果有
1,/Alex/ {sed-commands} 对匹配oldboy的行到匹配Alex的行操作 对第1行到匹配Alex的行进行操作
/oldboy/,+2 {sed-commands} 对匹配oldboy的行到最后两行的操作
文本替换
s: 单独使用,将每一行中第一处匹配的字符串进行替换
g: 每一行进行全部替换
-i: 修改文件内容
sed -i ‘s/a/b/g’ person.txt
sed -i 's#a#b#g' person.txt
将文本中所有的a替换成b
sed -i '3s#a#b#g' person.txt
将文本中第三行所有的a替换成b
sed -i '3s#a#b#' person.txt
将文本中第三行第一个a替换成b
特点:
1 两边是引号,引号里面的两边分别为s和g,中间是三个一样的字符/或#作为定界符。#能在替换内容包含/有助于区别。定界符可以是任意的符号如:或 | 等,但当替换内容包含定界符时,需要转移
2 定界符/或者# 第一个和第二个之间的就是被替换的内容,第二个和第三个之间的是替换后的内容。
3 第一个和第二个定界符之间可以用正则表达式,但第二个和第三个之间不能,必须是具体的。
4 默认sed软件是对模型空间操作,而-i 选项会更换磁盘的上文件的内容。
sed 的后置引用
& 符号
后置引用与&符号的联合使用
查
p 输出指定内容,但默认会输出两次结果,因此使用n取消默认输出
sed 后向引用
将用户名与登录shell换位置
cat /etc/passwd | sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp'