千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:武汉千锋IT培训  >  技术干货  >  Linux三剑客之-sed

Linux三剑客之-sed

来源:千锋教育
发布人:syq
时间: 2023-03-01 10:06:34

  一、sed简介

  在Linux/UNIX系统中包含很多种类的文本处理器或文本编辑器,其中包括其中包括我们之前学习过的VIM 编辑器与grep 等。而 grep,sed,awk 更是Shell 编程中经常用到的文本处理工具, 被称之为Shell 编程三剑客。

  sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。

  sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。

  二、sed工作原理

  一行一行处理的

  当从文件中读取一行后,首先放到模式空间中对该行进行相应的处理,处理完将结果输出到屏幕上。然后继续读取下一行内容,直到所有行都读取完毕,sed结束。

15

  三、sed基本使用

16

  选项:

  -n:静默输出,关闭模式空间的输出,不会输出未匹配到的行 一般与p命令结合使用

  -e:允许进行多项编辑,也就是说对同一行做多次处理、. 可以做多点编辑

  -e '动作1' -e '动作2' == '动作1;动作2'

  -f:后接sed脚本,指定执行的sed脚本(将模式动作写到文件中)

  -r:允许使用扩展正则

  -i:直接作用于原文件 没有输出 在使用-i之前一定先不加-i看看效果

  -i.bak:修改原文件之前进行备份

  模式:

  1.空模式,表示所有的行都执行动作

  2.以行号作为模式

  1). 单独的行号

  如:1 就是处理第1行

  $ 处理最后一行

  2). 起始行,结束行

  如:1,5 处理第1到5行

  3). 起始行~步长

  每隔多少行操作一次

  如:2~2 从第2行开始,每隔1行

  4). 起始位置,+N

  表示从起始位置开始,后面的N行都进行处理

  如:3,+5 处理3-8行

  3.以正则作为模式

  1). /正则表达式/

  如:/^root/

  2). /正则表达式1/,/正则表达式2/

  表示从第一次匹配到正则表达式1开始到第一次匹配到正则表达式2之间的所有行

  如:/^bin/,/sh$/

  动作-----处理命令: ! 非 : 放在命令前面表示取反

  d 删除 delete

  p 打印 print

  r 读取 read

  w 写 write

  a 追加 在匹配的行下面插入内容 append

  i 插入 在匹配行的上一行插入内容 insert

  c 修改 本行替换 change

  y 转换的命令,一一对应转换

  n 处理下一行 next

  q 退出,不会再向模式空间读入新的行 quit

  s 查找替换

  '模式s/旧的内容(正则表达式)/替换内容(新的内容)/[修饰符]'

  修饰符:

17

  四、随堂案例

  sed的内容非常多,虽然有些复杂,但是在工作中用的非常多,可以给我们工作中带来很多便利,下面我们看到几个案例

  1.从以root开头的行,到以login结尾的行,将sbin替换为bin (/etc/passwd文件或其一部分)

  sed -r -n '/root/,/login/s/sbin/bin/p' /etc/passwd

  2.将格式为2014/08/17的日期,替换为2023; 02; 02这样的格式(注意:分号后面有空格)

  date +"%Y/%m/%d"|sed 's/\//; /g'

  3.将pass文件每行打印3次

  sed 'p;p;' /tmp/pass

  4.打印pass文件的第1行和第3行

  sed -n '1p;3p;' /tmp/pass

  5.删除pass文件的第一行和最后一行

  sed '1d;$d' pass

  6.删除pass文件中所有的数字

  sed -r 's/[0-9]*//g' pass

  五、结言

  同学们,今天的Linux三剑客之sed就学到这里,各位同学们一定要勤加练习.

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

javascript中如何搜索数组元素

2023-03-17

ui设计之js效果-如何制作文字倒计时

2023-03-06

svn与git的区别是什么?使用git的优势是什么

2023-03-03

最新文章NEW

java异常分类三大类是什么?

2023-06-06

什么是枚举?没有枚举之前怎么做的

2023-03-17

echarts和chart的优缺点对比

2023-03-09

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>