sed:stream editor,Linux的一款流编辑器,主要对文本内容进行过滤与替换。使用命令man sed,可以看到对sed命令的介绍

下文总体指导思想:

对于sed的工作过程,个人认为如果不是非要把sed的所有功能都学会,是不需要把工作过程搞懂的。绝大部分人,特别针对于想要先尽快上手的人,掌握如何使用基本的sed功能应该比较重要的!

学习sed命令的使用,主要还是结合man sed中的提示来学习:

sed synopsis(大纲):命令的格式

  • sed 【option】【script】【input_file】

sed使用的学问就是在上面三个标记颜色的区域,下面简述这三个区域:

【option】域:作用主要是指定sed处理完数据后应该怎么呈现结果(可能描述不是很恰当),比如结果怎么显示,要不要对文本本身修改等。

空:当不指定参数时,sed为将处理的文本内容原样输出,即不过做什么操作,文件的文本内容都先显示

-n: (silent,也称为静默模式)取消默认输出,即与上面相反。只将进行过相应处理的行打印输出,没有匹配到的行不原样输出。

-i:sed直接操作文本内容,对其的任何内容修改都会更改文件。(sed默认不是对文件的文本内容进行操作,而是拷贝其内容到自己的工作空间中在进行操作 )

【script】域:该域的作用是指定对某哪些行做某哪些操作!

该域其实是分为两个部分:指定行+操作(address+command),前者可以少但后者不能少!

  • 怎么表现要处理的行:address
  • 要进行哪些操作:command

如何表示行呢?有以下选项:(90%的主要写法,个别较少使用不适合入门理解未写上)

  1. number:直接指定一个数字,如5,即操作的行对象是第5行
  2. first~step:直接上例子(3~4),指的是从第三行开始匹配,之后每隔4行就被匹配到。因此,第3,7,11,…行将是被操作的行。first指要匹配的第一行,step指从第first行之后,每隔step行的行就被匹配到,linux man手册的例子是(1~2),匹配的是所有奇数行,作为加深印象的例子
  3. $:直接一个$,匹配文本的最后一行
  4. /regexp/\cregexpc :匹配符合正则表达式的行,注意:c可以是任意字符只需保证首尾一致!(这里着重不是讲正则表达式,不熟悉的要参见其他笔记)
  5. addr1,addr2:如(1,5)匹配1到5行,第1行和第5行都将会被匹配到
  6. addr1,+N:如(1,+5)匹配第1行之后,在往后匹配5行,也就是一共匹配6行。即将匹配第addr1行以及接下来N行
  7. addr1,~N:如(10,~8)匹配第10行到第16行(最近一个是8的倍数那一行)。即将匹配第addr1行以及后面最近一个行号是N的倍数的行

如何表示操作呢?有以下选项:(60%主要写法,涉及保持空间的参数未列入)

允许没有地址或只有1个地址的参数:

  1. =:打印正在操作的行,即当前行
  2. a \text:以另起新行的形式,追加text内容在指定的行后面,支持使用\n实现多行插入
  3. i \text:以另起新行的形式,追加text内容在指定的行前面,支持使用\n实现多行插入
  4. r filename:从指定文件中读取内容追加到当前行合并

允许匹配一个地址范围的参数:

  1. d:删除当前行(删除模式空间中的内容)
  2. c \text:以text内容替换指定的行,支持使用\n实现多行插入
  3. p:打印当前行(即打印当前模式空间)
  4. s/regexp/replacement/:对操作行使用正则表达式匹配指定内容,用replacement替换
  5. {;}:若一次不止进行一个操作,可以将多个操作参数用{}包括进来,参数之间可以用;隔开,如{a \text;p}

【input_file】域:指定要处理的文件

举2个栗子

test文件内容如下:

1、sed -n ‘4,7p’ test01

-n:对应option域;‘4,7p’:对应script域,其中4,7对于address部分,p匹配操作参数部分;test01:对应input-file域

含义:对第4到7行进行打印输出(p参数),-n选项表示静默输出,此时不输出原文本;不加-n参数时如下:

2、sed -i ‘4,+2s/[0-9]/12345/’ test

当不加-i参数时,修改不影响原文本内容

加-i参数后,修改会被写入原文本内容

含义:对test文件的第4行开始,往后2行(即4,5,6三行)所匹配到的内容进行替换,[0-9]匹配一个数字,将该数字替换为12345,写入原文件中。

总结:个人认为sed的学习入门以此作为概览是不错的选择,以上的解释表述了如下问题:

1、sed命令的语法

2、sed命令各种部分的含义,以及分别有哪些简单,易理解的可选参数

3、简单的使用示例

Linux命令之sed使用入门概述相关推荐

  1. Linux命令:sed

    sed命令简介: sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区 ...

  2. 每日linux命令学习-sed

    Linux的文本处理实用工具主要由sed和awk命令,二者虽然略有差异,但都使用正则表达式,默认使用标准I/O,并且使用管道命令可以将前一个命令的输出作为下一个命令的输入.笔者将在本节学习sed命令. ...

  3. Linux 命令之 sed -- 功能强大的流式文本编辑器

    文章目录 一.命令介绍 二.命令格式 三.常用选项 四.sed 子命令 五.sed 替换标记 六.sed 元字符集 七.命令示例 (一)用指定的字符串替换掉指定的字符串 (二)删除文档中的空白行 (三 ...

  4. linux命令分析---SED (二)

    SED单行脚本快速参考(Unix 流编辑器) 英文标题:USEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor) 原标题:HANDY ONE-LINER ...

  5. linux下查询日志sed与或非,Linux命令之sed命令使用介绍

    sed是linux轻量级流编辑器,用于行的操作,主要用来数据的选取.替换.删除.新增等.从输入文件中一次一行的读取, 按顺序将列表中的命令应用到每一行,并将其编辑过的行,写到标准输出. 权  限:所有 ...

  6. linux 神奇命令,Linux 命令神器:lsof 入门

    lsof是系统管理/安全的尤伯工具.我大多数时候用它来从系统获得与网络连接相关的信息,但那只是这个强大而又鲜为人知的应用的第一步.将这个工具称之为lsof真实名副其实,因为它是指"列出打开文 ...

  7. linux 查看进程的lsof,Linux 命令神器:lsof 入门

    lsof是系统管理/安全的尤伯工具.我大多数时候用它来从系统获得与网络连接相关的信息,但那只是这个强大而又鲜为人知的应用的第一步.将这个工具称之为lsof真实名副其实,因为它是指"列出打开文 ...

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

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

  9. Linux命令之乐--sed

    sed是stream edit的缩写,是处理文本非常重要的工具. 常见用法: 1. 替换文本 1.1 替换文本中的第一处符合的样式 sed 's/pattern/replace_string' fil ...

最新文章

  1. 谷歌开放语音命令数据集,助力初学者利用深度学习解决音频识别问题
  2. oracle 9i生成分析报告,ORACLE 9i 以后的分析函数汇总 - fesing - Qihang.Net
  3. .NET开发的一些积累
  4. Flask-script
  5. 最近miRNA研究上取得的新进展论文汇总
  6. AppleScript: Handler
  7. select2删除选中项,allowClear设置
  8. wireshark_Couldn’t run /usr/sbin/dumpcap in child process: Permission denied
  9. Jenkins学习一:Jenkins是什么?
  10. ROS机器人操作系统资料与资讯(2018年6月)
  11. KEIL使用教程——KEIL常用配置技巧
  12. 使用python读取excel文件数据,修改dbf文件
  13. GitHub备注油猴插件
  14. 仓库货架通道宽度的设计要求和注意事项
  15. windows7 中pkeyconfig.xrm-ms文件无法删除解决办法
  16. 极客日报:腾讯回应微信刷掌支付;iPhone 13 Pro或提供1TB版本;Git 2.33 发布
  17. sublime匹配汉字
  18. 海康威视web插件层级遮挡问题,仅供参考
  19. keil5 c语言运行
  20. 【数据分析案例】使用机器学习做游戏留存数据挖掘的一种尝试

热门文章

  1. [leetcode]328. Odd Even Linked List
  2. mysql创建复杂表_数据库_MySQL_复杂的表结构创建
  3. Windows Server 2016上SQL Server Always On可用性组的全面指南
  4. power bi可视化表_在Power BI报表视图中创建可视化
  5. ssas如何创建分区_如何基于SSAS信息创建Excel报告
  6. 多实例kerberos_如何使用Kerberos链接两个SQL Server实例
  7. kerberos验证_SQL Server中的服务主体名称和Kerberos身份验证概述
  8. azure云数据库_Azure Data Studio中的服务器和数据库仪表板
  9. Hibernaate 详解
  10. 被request.getLocalAddr()苦闷了很久