Linuxshellsed命令详解
详细的sed命令详解,请参考
sed命令常见⽤途
1. 查关键词做全局替换
linux执行shell命令
2. 查某⾏的关键词做替换
3. 查关键字所在⾏,并且执⾏指定关键字的替换
4. 在某⾏之后追加
5. 查关键字,并且在第⼆⾏追加
6. 删除包含关键字的⾏
7. 查看指定的⾏
8. 在最后⼀⾏追加
9. sed -e 参数,屏幕输出,⼀次更改多替换⽂本中多个值
1. 查关键词做全局替换
sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config
2. 查/etc/crontab 第17⾏,并且把0,30替换为15,45
sed -i '17s/0,30/15,45/' /etc/crontab
3. 查/etc/crontab 中的关键字script.sh,并且把15,45替换为0,30
sed -i '/script.sh/s/15,45/0,30/' /etc/crontab
4. 在第17⾏后添加新的⼀⾏内容
sed -i '17a\0 * * * * root /root/test.sh' /etc/crontab
5. 在/etc/crontab中查关键字script,并且该关键字的下⼀⾏追加⼀⾏新内容
sed -i '/^.*script.*$/a\30,45 * * * * root /root/check.sh' /etc/crontab
6. 在/etc/crontab中查关键字check.sh,并且把这⾏的内容替换掉
sed -i '/^.*script.*$/c\30,45 * * * * root /root/check.sh' /etc/crontab
7.  在/etc/crontab中查关键字check.sh,并且删除该⾏
sed -i '/check.sh/d' /etc/crontab
8. 显⽰第17到18⾏之间的内容
sed -n '17,18p' /etc/crontab
9. 在最后⼀⾏追加⼀⾏0 * * * * root /root/check.sh
sed -i '$a\0 * * * * root /root/check.sh' /etc/crontab
10. sed 命令处理换⾏符,例如替换或者删除
sed ':label;N;s/\n/:/;b label' filename
sed ':label;N;s/\n/:/;t label' filename
上⾯的两条命令可以实现将⽂件中的所有换⾏符替换为指定的字串,如命令中的冒号。命令的解释:
:label; 这是⼀个标签,⽤来实现跳转处理,名字可以随便取(label),后⾯的b label就是跳转指令
N; N是sed的⼀个处理命令,追加⽂本流中的下⼀⾏到模式空间进⾏合并处理,因此是换⾏符可见
s/\n/:/; s是sed的替换命令,将换⾏符替换为冒号
b label 或者 t label b / t 是sed的跳转命令,跳转到指定的标签处
标签跳转和N的追加命令实现了每⼀⾏的不间断放⼊模式处理空间,从⽽不会漏掉每⼀个换⾏符,⽽没有标签的话跳转的话,就只能每两⾏替换掉⼀个换⾏符,对⽐效果:
$  echo "a,b,c,d" |sed 's/,/\n/g'|sed ':x;N;s/\n/,/;b x'
a,b,c,d
$  echo "a,b,c,d" |sed 's/,/\n/g'|sed 'N;s/\n/,/'
a,b
c,d
10. sed -e参数,并不真正编辑源⽂件,只是屏幕输出
⼀条sed命令,删除/etc/passwd第三⾏到末尾的数据,并把bash替换为blueshell
nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1  root:x:0:0:root:/root:/bin/blueshell
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
e表⽰多点编辑,第⼀个编辑命令删除/etc/passwd第三⾏到末尾的数据,第⼆条命令搜索bash替换为blueshell。如果只是处理⼀个东西,可以省略-e ,接多个就不能省略

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。