Shell编程之正则表达式与文本处理器2--sed

目录

一、sed 工具

1. 概述

2. sed 原理

3、常用操作选项

3.1 常用选项

3.2 操作命令

4. sed 的使用

5. 具体操作

5.1 打印输出  p

5.1.1 显示范围、单行、指定行输出、指定往后加几行输出

5.1.2  显示奇偶行

5.1.3 将指定内容的行打印出来      

5.1.4 只输出行号

5.2 增加内容  a  i

5.2.1 在指定行之前插入

5.2.2 在指定行之后插入内容

5.3 删除  d

5.3.1 全部删除

5.3.2 删除指定行

5.4 替换  c

5.5 搜索替换  s

5.6 插入文件  r

5.7 另存到文件  w

5.8 同时编辑

5.9 分组操作

5.10 读取完退出

5.11 sed 脚本

5.12 高级应用

5.12.1 -r 匹配正则表达式

5.12.2 结合变量使用


一、sed 工具

1. 概述

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

sed 命令是利用脚本来处理文本文件。它可以依照脚本的指令来处理、编辑文本文件。主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

总结:

  • 文本处理工具,读取文本内容,根据指定的条件进行处理,如删除、替换、添加等;
  • 可在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shel脚本,以完成自动化处理任务;
  • sed 依赖于正则表达式;

2. sed 原理

工作原理:

  • 读入新的一行内容到缓存空间; 从指定的操作指令中取出第一条指令,判断是否匹配pattern;
  • 如果不匹配,则忽略后续的编辑命令,回到第2步继续取出下一条指令;
  • 如果匹配,则针对缓存的行执行后续的编辑命令;完成后,回到第2步继续取出下一条指令;
  • 当所有指令都应用之后,输出缓存行的内容;回到第1步继续读入下一行内容;
  • 当所有行都处理完之后,结束;

总结:

根据输入的命令,在缓存中操作,逐行对比处理数据,看是否和命令要求匹配,若匹配,就继续后续命令编辑,完成后回到之前步骤,取出下一行指令编辑;若不匹配,则忽略该行,继续回去取出下一条指令执行;所有指令都执行完之后,输出数据到缓存,回到第一步,继续读入下一行内容。直到所有命令执行完成,输出到屏幕。

3、常用操作选项

格式:

  • sed [选项] '操作' 参数
  • sed [选项] -f scriptfile 参数

3.1 常用选项

-e

表示用指定命令或者脚本来处理输入的文本文件

进行多次编辑

-f

表示用指定的脚本文件来处理输入的文本文件

指定sed文件名

-h 显示帮助
-n

表示仅显示处理后的结果

取消默认输出

-i

直接编辑文本文件。使用时慎重,会直接修改数据

直接在源文件中修改

-i.bak 修改完配置文件后进行备份
-r、-E

使用扩展正则表达式

-s 将多个文件视为独立文件,而不是单个连续的长文件流

3.2 操作命令

“操作”用于指定对文件操作的动作行为,也就是 sed 的命令。通常情况下是采用的“[n1[,n2]]”操作参数 的格式。n1、n2 是可选的,代表选择进行操作的行数,如操作需要在 5~ 20 行之间进行,则表示为“5, 20 动作行为”。

常见操作

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

4. sed 的使用

sed [options] script filename

sed   [option]...   'script;script;...'           [input file...]

           选项         自身脚本语法       支持标准输入管道

  • options指的是sed的命令行参数,比较有限。
  • script是指需要对输入执行的一个或者多个操作指令,一般需要用单引号括起来,这样可以避免shell对 特殊字符的处理。sed会依次读取输入文件的每一行到缓存中并应用script中指定的操作指令,因此而带 来的变化并不会影响最初的文件(除非option加了-i参数)。
  • 每条操作指令由pattern和procedure两部分组成,顾名思义,pattern是匹配的规则,一般为用’/'分隔的 正则表达式(也有可能是行号,具体参见Sed命令地址匹配问题总结),而procedure则是一连串编辑命 令(action)。

总结:

  • sed命令+选项 ‘定位+动作+内容’ 文件名

5. 具体操作

注意:一般“ -n ” 和 “ -p ” 一起使用

5.1 打印输出  p

  • 查看文件内容
sed '' cs.txt 

  • 带有自动打印功能,p又再打印一遍
sed 'p' cs.txt 

sed -n 'p' cs.txt    ### -n  关闭自动打印功能

5.1.1 显示范围、单行、指定行输出、指定往后加几行输出
  • 显示范围

  • 显示单行

  • 显示指定行输出

  • 指定往后加几行输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值