sed命令简介:

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

1.命令格式:

sed [options] ‘  ’

行编辑器 (全屏编辑器: vi),逐行读取

2.命令功能
   Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

Linux三大文本处理工具:grep, sed(流编辑器), awk

默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;

3.主要参数

sed [options] 'AddressCommand' file ...

-n: 静默模式,不再默认显示模式空间中的内容

-i: 直接修改原文件

-e SCRIPT -e SCRIPT:可以同时执行多个脚本

-f /PATH/TO/SED_SCRIPT: 从文件中读取命令,把命令写入文件,不需要单引号括起来

sed -f /path/to/scripts  file

-r: 表示使用扩展正则表达式

Address:

1、StartLine,EndLine

比如1,100

$:最后一行

2、/RegExp/

/^root/

3、/pattern1/,/pattern2/

第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行

4、LineNumber

指定的行

5、StartLine, +N

从startLine开始,向后的N+1行;

Command:

d: 删除符合条件的行;  (delete)

sed  '1,3d' grub.conf      刪除1-3行

sed '1,+2d' grub.conf      刪除1-3行

sed '1,$-2d' grub.conf      刪除1-倒数第2行

sed '/oot/d' grub.conf      刪除有oot行

sed  '/^\#/d' grub.conf      刪除有/开头的行      \转义符

p: 显示符合条件的行;   (print)

sed  '/^\#/p' grub.conf      重复打印全文  及匹配的有#开头的行    \转义符

sed -n  '/^\#/p' grub.conf      只打印有#开头的行      \转义符

a \string: 在指定的行后面追加新行,内容为string

\n:可以用于换行

sed '/^\//a \# hello world'  /etc/fstab     /开头行的下行加入# hello world

sed '/^\#/a \# hello world'  /etc/fstab     #开头行的下行加入# hello world

i \string: 在指定的行前面添加新行,内容为string

sed '/^\//i \# hello world'  /etc/fstab     /开头行的上行加入# hello world

sed '/^\#/i \# hello world'  /etc/fstab     #开头行的上行加入# hello world

r FILE: 将指定的文件的内容添加至符合条件的行处   (read)

sed '2r /etc/issue'  /etc/fstab     第2行的下行加入/etc/issue文件内容到目标文件中

w FILE: 将地址指定的范围内的行另存至指定的文件中;   (write)

sed -n '/oot/w  /tmp/oot.txt'  /etc/fstab     将目标文件中含有oot的行保存到/tmp/oot.txt

s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串

sed 's/oot/OOT/' /etc/fstab        将目标文件中第一个含有oot的字符替换成OOT

       sed 's#oot#OOT#g' /etc/fstab        将目标文件中所有含oot的字符替换成OOT

       sed 's@oot@OOT@gi' /etc/fstab  将目标文件中所有含不区分大小写oot替换成OOT


匹配多个字符串,需要加修饰符:     g: 全局替换          i: 忽略字符大小写

s///: 也可以使用其他字符做分隔符,只要一样就行,如s###, s@@@

   后项引用: , \1, \2

   匹配整个串:  &

l..e->l..er: like-->liker      love-->lover

sed 's#l..e#\1r#g'

sed 's#l..e#&r#g'

l..e->L..e:    like-->Like      love-->Love

sed 's#l(..e)#L\1#g'

4.命令实例:

  实例一:删除/etc/grub.conf文件中行首的空白符;

   sed  -r  's@^[[:space:]]+@@g' /etc/grub.conf

    sed  -r  's#^[[:space:]]##g' /etc/grub.conf

    sed  -r  's/^[[:space:]]//g' /etc/grub.conf

  实例二:替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;

   sed -r 's@(id:)[0-9](:initdefault:)@\15\2@g' /etc/inittab

  实例三:删除/etc/inittab文件中的空白行;

   sed '/^$/d' /etc/inittab

  实例四:删除/etc/inittab文件中开头的#号;

   sed 's@^#@@g' /etc/inittab

  实例五:删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;

   sed -r 's@^#[[:space:]]+@@g' /etc/inittab         +  表示出现>1次

  实例六:删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#

   sed -r 's@^[[:space:]]+#@@g' /etc/inittab

   sed 's/^\ \+#//' /etc/inittab

   sed  '/^\ \+#/d' ./inittab

  实例七:取出一个文件路径的目录名称;

   echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'

取出基名:

echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'

---end---

转载于:https://blog.51cto.com/wangfx/1863962

Linux命令:sed相关推荐

  1. sed是linux命令吗,Linux命令 sed

    一. 以行为单位进行操作. d:删除 $ nl passwd | sed '2,5d'  # 删除第2~5行 $ nl passwd | sed '2d'  # 删除第2行 $ nl passwd | ...

  2. [Linux命令]Sed命令参数

    一个命令写了半天总是不对,原来时间久了就忘掉了...,收藏自:http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/sed.htm Table of Content ...

  3. Linux命令 - sed 简明教程

    摘录:http://coolshell.cn/articles/9104.html awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了.所以 林 ...

  4. Linux命令-Sed用法教程

    sed 全名为 stream editor,是用于文本处理的流编辑器,支持正则表达式.sed处理文本... 前言 sed 全名为 stream editor,是用于文本处理的流编辑器,支持正则表达式. ...

  5. linux命令 sed 有的功能有,Linux命令:sed简介

    sed是一种在线行编辑器,一次处理一行.工作时,把当前处理的行放到"模式空间"中进行编辑,编辑完成后把内容输送至屏幕. 语法:sed [OPTION]-{script}-[inpu ...

  6. linux指令 sed,Linux命令sed

    sed流编辑器:Stream EDitor sed行编辑器,使用sed,将文件的行加载到内存,符合sed模式空间的显示到屏幕上,sed默认不编辑文件,仅对模式空间的数据处理,处理结束后,将符合模式空间 ...

  7.  linux命令sed与awk是干什么用的,怎么用?

    非常强大的文本操纵工具,sed,awk,grep 这个三个命令 都是操作文本文件的 unix系统有几个非常命令的特点: 1. 对于内核而言,unix文件都是字节序列.io设备也是文件. 2. 至于文件 ...

  8. Linux命令-sed

    一.简介 sed 命令是通过流编辑的方式来处理和编辑文件的,也就是逐行读取并查找.处理(增.删.改-)数据. 语法: sed [选项] [脚本命令] 文件名 或者 标准输出 | sed [选项] [脚 ...

  9. linux gp sed,linux命令---sed

    sed    stream editor for filtering and transforming text  流编辑器来过滤和改变文本 选项: -n 安静模式,在标准输入给sed时,加上-n 只 ...

  10. linux 命令sed命令指定行或匹配行插入行

    sed -i "231s:.*:hello:g" file #将第231行的所有字符替换为hellosed -i '$d' file #将文件file的最后一行删除sed -i & ...

最新文章

  1. WEB SSH Ajaxterm客户端配置(1)
  2. 那些年,让我面试头大的几个排序算法,今天终于搞懂了!
  3. ios开发笔记之 APNS推送服务的实现
  4. Android开发 listitem中采用倒计时
  5. jdk8集合类流_JDK 8中的流驱动的集合功能
  6. Hibernate事实:集成测试策略
  7. v5系列服务器后面板不存在以下哪款指示,群晖RS10613xs+ NAS服务器后面板简介
  8. 远程桌面服务器无法复制粘贴了怎么解决
  9. 计算机的生产过程,笔记本电脑生产流程介绍 .pptx
  10. linux基础ppt下载,《Linux基础》PPT课件.ppt
  11. Unity中的资源管理-一整套简单的资源管理方案(1)
  12. 小麦苗的常用代码--常用命令(仅限自己使用)--上
  13. idea 运行单个main方法_idea如何运行main方法
  14. 怎么样减肥又快又好 达人推荐最有效的减肥方法
  15. 数据可视化|用堆叠条形图进行对比分析
  16. 汇付国际为跨境电商赋能:做合规的跨境支付平台!
  17. 【渝粤题库】陕西师范大学163211 会展管理作业
  18. SpringBoot2.6.5+Swagger3配置
  19. python学习-调用邮件接口发送邮件
  20. Windows 7 安装最新版 2021-3-1 的 tableau 时提示 “指定程序要求更新的 Windows 版本” 解决办法

热门文章

  1. PHP学习笔记-Cookie
  2. Android之SharedPreferences 讲解
  3. LeetCode 8 字符串转整数 (atoi)
  4. DataTable 数据去重复
  5. linux 文件截取
  6. Java设计模式学习06——静态代理与动态代理(转)
  7. PTA 03-树1 树的同构 (25分)
  8. 网络爬虫-爬取微博热门话题前15个
  9. Windows Management Instrumentation WMI Security Technology Learning
  10. [转贴] C++内存管理检测工具 Valgrind