流编辑sed

作者: 迷糊银儿 | 来源:发表于2018-12-16 15:26 被阅读14次

工作方式

sed是基于的,因此按顺序对每一行执行命令。然后,sed 将其结果写入标准输出(stdout),它不修改任何输入文件。

sed -e '1d' a.sh

上述命令的执行过程:

  1. sed打开a.sh文件
  2. 将1行读入其模式缓冲区
  3. 执行编辑命令 d (删除行)
  4. 打印模式缓冲区
  5. 对后面的每一行重复1--4步骤

基本语法

sed -参数 -动作 文件

参数:

选 项 说明
-n 使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
-e 多重编辑,且命令顺序会影响结果
-f 指定一个 sed 脚本文件到命令行执行,
-r Sed 使用扩展正则
-i 直接修改文档读取的内容,不在屏幕上输出

动作:

  • a :新增。 a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代。 c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除。因为是删除啊,所以 d 后面通常不接任何咚咚;
  • i :插入。 i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印。亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代。可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

规则

字符 描述
^ 与行首匹配
$ 与行尾匹配
. 与任一个字符匹配
* 与前一个字符的零个或多个出现匹配
[] 与[]之内的所有字符匹配

规则表达式实例

规则表达式 描述
/./ 将与包含至少一个字符的任何行匹配
/../ 将与包含至少两个字符的任何行匹配
/^#/ 将与以‘#’开头的任何行匹配,通常是注释
/^$/ 将与空行匹配
/}$/ 将与以‘}’结束的任何行匹配
/} *$/ 将与‘}’后面跟随零个或多个空格结束的任意行匹配
[abc] 将与包含任何小写字母'a'或'b'或'c'的任意行匹配
^[abc] 将与以字母'a'或'b'或'c'开始的任意行匹配

应用

  Qufangdemac:test qfcomputer$ cat a.sh
  #this is a beautiful kit
  #hello world kitty hhhh
  hello fuzi hello shenmu
  hello inner hello xian
  hello good morning hello hello china
  • 忽略注释
Qufangdemac:test qfcomputer$ sed -e '/^#/d' a.sh
hello fuzi hello shenmu
hello inner hello xian
hello good morning hello hello china
  • 打印指定行
Qufangdemac:test qfcomputer$ sed -n '1,3p' a.sh
#this is a beautiful kit
#hello world kitty hhhh
hello fuzi hello shenmu
  • 打印注释的行
Qufangdemac:test qfcomputer$ sed -n '/^#/p' a.sh
#this is a beautiful kit
#hello world kitty hhhh
  • 全文替换
Qufangdemac:test qfcomputer$ sed -e 's/hello/hi/g' a.sh
#this is a beautiful kit
#hi world kitty hhhh
hi fuzi hi shenmu
hi inner hi xian
hi good morning hi hi china
  • 指定地址范围+替换
Qufangdemac:test qfcomputer$ sed -e '1,3s/hello/hi/g' a.sh
#this is a beautiful kit
#hi world kitty hhhh
hi fuzi hi shenmu
hello inner hello xian
hello good morning hello hello china
  • 输出行号并打印这一行
Qufangdemac:test qfcomputer$ sed  '=' a.sh
1
#this is a beautiful kit
2
#hello world kitty hhhh
3
hello fuzi hello shenmu
4
hello inner hello xian
5
hello good morning hello hello china
  • 多命令组合
Qufangdemac:test qfcomputer$ sed '1,3p;=' a.sh
#this is a beautiful kit
1
#this is a beautiful kit
#hello world kitty hhhh
2
#hello world kitty hhhh
hello fuzi hello shenmu
3
hello fuzi hello shenmu
4
hello inner hello xian
5
hello good morning hello hello china
  • 多命令组合
Qufangdemac:test qfcomputer$ sed -e '1,3p' -e '=' a.sh
#this is a beautiful kit
1
#this is a beautiful kit
#hello world kitty hhhh
2
#hello world kitty hhhh
hello fuzi hello shenmu
3
hello fuzi hello shenmu
4
hello inner hello xian
5
hello good morning hello hello china
  • 删除包含hello的行
Qufangdemac:test qfcomputer$ sed  '/hello/d' a.sh
#this is a beautiful kit
  • 打印包含hello的行
Qufangdemac:test qfcomputer$ sed -n '/hello/p' a.sh
#hello world kitty hhhh
hello fuzi hello shenmu
hello inner hello xian
hello good morning hello hello china
  • 打印包含hello的行
Qufangdemac:test qfcomputer$ sed -n '/^.*hello.*$/p' a.sh
#hello world kitty hhhh
hello fuzi hello shenmu
hello inner hello xian
hello good morning hello hello china

相关文章

  • sed常用操作命令

    sed: stream editor , 流/行 编辑器 ; sed 命令详解: sed [OPTIONS].....

  • sed和gawk

    sed sed是流编辑器,是会在编辑器处理数据之前要预先提供一组规则来编辑数据流。sed根据命令来处理数据流中的数...

  • 六、sed

    sed的工作模式 sed是一个流编辑器,比如修改删除等都是编辑。 sed选项 sed中的pattern sed中的...

  • inux学习 Day15-sed基本用法

    文本处理工具:grep,sed(流编辑器),awk sed基本用法:sed(Stream EDitor)行编辑器(...

  • shell编程之SED

    2021-01-13 sed流编辑器用法及解析sed: stream editor(流编辑器)的缩写. 它们最常见...

  • 流编辑sed

    工作方式 sed是基于行的,因此按顺序对每一行执行命令。然后,sed 将其结果写入标准输出(stdout),它不修...

  • 三剑客-sed

    sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器。什么是流?大家可以想象以下流水线,sed...

  • sed 相关总结

    一. sed 基础 sed 编辑器被称作流编辑器,它会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。在流...

  • 8-Linux sed 命令用法

    sed的基本用法 sed : String EDitor (流编辑器)行编辑器,逐行处理文本 全屏编辑器(vi) ...

  • shell系列8-sed

    一. sed概述 sed(stream editor)是流编辑器,可对文本文件和标准输入进行编辑。sed只是对缓冲...

网友评论

    本文标题:流编辑sed

    本文链接:https://www.haomeiwen.com/subject/uaztkqtx.html