sed 命令精讲
sed 命令精讲
sed Stream Editor
语法格式:
sed [options] [sed-commands] [input-file]
1.注意sed和后面的选项之间至少有一个空格
2.sed-commands既可以是单个sed命令,也可以是多个sed命令的组合。
3.input-file是可选项,sed还能够从标准输入如管道中获取输入
命令执行流程:
sed从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行行。。。
1.单行增加 (a)
在第二行后追加一行内容
sed '2a 106,dandan,CSO' person.txt
在第二行的位置插入一行内容,原来的行往后移(i)
sed '2i 106,dandan,CSO' person.txt
2.多行增加
sed '2a 106,lisi,CEE\n107,zs,CLS' person.txt
sed -i '13i Port 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config
3.指定执行的范围
sed 软件可以对单行或多行进行处理。如果在sed命令前面不指定地址范围,那么默认会匹配所有行。
10{sed-commands} 对第10行操作
10,20{sed-commands} 对第20行操作,包括第10,20行
1~2{sed-commands} 对1,3,5,7,...行操作
10,${sed-commands} 对10行到最后一行进行操作
/oldboy/{sed-commands} 对匹配到oldboy的行进行操作
/oldboy/,/alex/{sed-commands} 对匹配到oldboy和alex的行进行操作
/oldboy/,${sed-commands} 对匹配到oldboy的行到最后一行操作
/oldboy/,10{sed-commands} 对匹配到oldboy的行到第10行进行操作
1,/alex/{sed-commands} 对第一行到匹配到alex的行操作
/oldboy/,+2{sed-commands} 对匹配oldboy的行到其后的2行操作
4.删除操作(d)
sed '2,3d' person.txt 删除第2-3行
sed '1~2d' person.txt 删除奇数行
sed '1,+2d' person.txt 删除第一行和后两行
5.改
1.按行替换(c 用新行取代旧行)
sed '2c 110,madd,CSD' person.txt
2.文本替换
s:单独使用 将每一行中第一处匹配的字符串进行替换
g:每一行进行全部替换。sed命令s的替换标志之一
-i:修改文件内容
sed '3s#102#10000#' person.txt 仅替换第三行
6.分组替换\(\) \1
sed的\(\)的功能可以记住正则表达式的一部分,其中,\1位第一个括号记住的模式,即第一个小括号中匹配到的内容,sed最多可以记住9个括号。
7.特殊符号&代表被替换的内容
sed '1,3s#C#--&--#' person.txt
ls *.jpg | sed -r 's#(^.*)_finished.*#mv & \1.jpg#g' | bash 批量修改文件
8.查
p输出指定内容,但默认会输出2次匹配的结果,因此使用n取消默认输出
sed -n '2p' person.txt 取第二行
sed -n 'p' person.txt 打印所有,相当于cat
sed -n '/CTO/,/CFO/p' person.txt
浙公网安备 33010602011771号