详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761

sed命令常见用途

  1. 查找关键词做全局替换
  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 '/check.sh/d' /etc/crontab

7. 显示第17到18行之间的内容

sed -n '17,18p' /etc/crontab

8. 在最后一行追加一行0 * * * * root /root/check.sh

sed -i '$a\0 * * * * root /root/check.sh' /etc/crontab

9. 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/'
root:x:::root:/root:/bin/blueshell
daemon:x:::daemon:/usr/sbin:/bin/sh

e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。

如果只是处理一个东西,可以省略-e ,接多个就不能省略

最新文章

  1. SharePoint 2013管理中心里【管理服务器上的服务】不见了
  2. ex1-第一个程序 ”helloworld”
  3. oracle导入导出数据
  4. Cocos2d-x win7 + vs2010 配置图文详解
  5. 基于谷歌地图的Dijkstra算法水路路径规划
  6. 个人知识管理系统Version1.0开发记录(01)
  7. UiAutomator环境搭建及详细操作
  8. hiho #1288 微软2016.4校招笔试题 Font Size
  9. primace 5.0软件的Debug ware 功能的使用方法简介
  10. 【转】关于iPhone界面适配详细版本
  11. linux 访问windows共享
  12. 【转】如何删除一个repository(仓库)
  13. C++中的句柄类
  14. phpcms新增栏目字段_phpcms添加栏目属性
  15. Morn简介及使用教程
  16. document.onreadystatechange()来判断页面加载完
  17. Ubuntu 16.04 安装opencv3.4.5/cuda/caffe并使用jni笔记
  18. urllib 报错 IOError: [Errno socket error] TLS/SSL connection has been closed (EOF) (_ssl.c:590)
  19. python全栈开发day20-类的三大特性继承、多态、封装
  20. RedHat7安装Docker

热门文章

  1. Unable to create initial connections of pool. spring boot mysql
  2. asm相关内容想下载(包括 jar 包)
  3. 模块一:shell 脚本基础
  4. 查询linux版本信息
  5. 继 “多闪”后“飞聊”再被diss?其实社交还能这么玩
  6. python之路之io多路复用
  7. AcWing 826. 单链表
  8. MySQL学习(十一)double write 介绍 (半原创)
  9. selenium的鼠标事件操作
  10. django 0