shell脚本之正则表达式(二)——崩溃工具

  

sed工具

  

sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除,替换,添加,移动等),最后输出所有行或者仅输出处理的某些行se”也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。

  <人力资源/>   <人力资源/>   

sed工作流程

  

1。读取:sed从输入流(文件,管道,标准输入)中读取一行内容并存储到临时的缓冲区中。
2。执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
3。显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。

  <人力资源/>   <人力资源/>   

sed命令用法

  
 <代码> sed(选项)的操作的参数
  sed(选项)- f scriptfile参数 
  <人力资源/>   

<强>常见的sed命令选项

  
 <代码> - e或——表达=:表示用指定命令或者脚本来处理输入的文本文件。
  - f或——文件=:表示用指定的脚本文件来处理输入的文本文件。
  - h或——帮助:显示帮助。
  - n,安静或沉默:表示仅显示处理后的结果。
  我:直接编辑文本文件。 
  

"操作“用于指定对文件操作的动作行为,也就是sed的命令。通常情况下是采用的”(n1 [, n2]]”操作参数的格式.n1, n2是可选的,不一定会存在,代表选择进行操作的行数

  <人力资源/>   

<强>常见的操作选项

  
 <代码>:增加,在当前行下面增加一行指定内容。
  c:替换,将选定行替换为指定内容。
  d:删除,删除选定的行。
  我:插入,在选定行上面插入一行指定内容。
  p:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容,如果有非打印字符,则以ASCII码输出。其通常与“n”选项一起使用。
  s:替换,替换指定字符。
  y:字符转换。 
  <人力资源/>   

<>强用法演示

  

<强> 1。输出符合条件的文本(p表示正常输出)

  
 <代码> [root@localhost选择]# sed - n/etc/passwd“p”//输出所有内容,等同于猫的用法
  根:x: 0时:根:根://bin/bash
  本:x: 1:1:本:/bin:/sbin/nologin
  守护进程:x: 2:2:守护进程:/sbin/sbin/nologin
  adm: x: 3:4: adm:/var/adm/sbin/nologin
  lp: x: 4: lp:/var/spool/lpd:/sbin/nologin
  同步:x: 5:0:同步:/sbin:/bin/同步
  … 
  
 <代码>/etc/passwd sed - n“5 p”//输出第第五行的内容
  sed - n/etc/passwd的3、5 p//输出三到五行的内容
  sed - n p, n的/etc/passwd//输出所有奇数行的内容,n表示读入下一行资料
  sed - n ' n, p/etc/passwd//输出所有偶数行的内容
  sed - n 1, 5 {p, n}的/etc/passwd//输出1 ~ 5行间的奇数行
  sed - n”22日$ {n, p} '/etc/passwd//输出第22行至行位间的偶数行代码 之前
  

以上是sed命令的基本用法,sed命令结合正则表达式时,格式略有不同,正则表达式以“/卑А?/p>   <人力资源/>   

<强> sed命令与正则表达式结合使用

  
 <代码> [root@localhost选择]# sed - n/etc/passwd的/sbin/p//输出包含sbin的行
  本:x: 1:1:本:/bin:/sbin/nologin
  守护进程:x: 2:2:守护进程:/sbin/sbin/nologin
  adm: x: 3:4: adm:/var/adm/sbin/nologin
  lp: x: 4: lp:/var/spool/lpd:/sbin/nologin
  … 
  <人力资源/>   
 <代码> [root@localhost选择]# sed - n 2/sbin/p的/etc/passwd//输出从第2行开始至第一个包含sbin的行
  本:x: 1:1:本:/bin:/sbin/nologin
  守护进程:x: 2:2:守护进程:/sbin:/sbin/nologin  
  <人力资源/>   
 <代码> [root@localhost选择]# sed - n/etc/passwd的/sbin/=//输出包含sbin所在的行号,等号(=)用来输出行号
  2
  3.
  4
  5
  6
  7
  8
  … 
  <人力资源/>   
 <代码> [root@localhost选择]# sed - n '/^ ssh/p的/etc/passwd//输出以ssh开头的行
  sshd: x: 74:74: Privilege-separated SSH:/var/空/sshd:/sbin/nologin  
  <人力资源/>   
 <代码> [root@localhost选择]# sed - n '/[0 - 9]美元/p”测试。txt//输出以数字结尾的行
  π=3.141592653589793238462643383249901429  
  <人力资源/>   
 <代码> [root@localhost选择]# sed - n”/\ & lt;木材\祝辞/p”测试。txt//输出包含单词木材的行,\ & lt; \祝辞代表单词边界
  一个木头十字架! 

shell脚本之正则表达式(二)——崩溃工具