1、sed命令的简介及用法

sed:即为流编辑器,“stream editor”的缩写。他先将源文件读取到临时缓存区(也叫模式空间)中,再对满足匹配条件的各行执行sed命令。sed命令只针对缓存区中的副本进行,不会修改或破坏源文件。默认情况下,屏幕上既会打印各行的原始内容又会打印处理后的结果。

如图 1: sed 处理过程

sed语法:sed [选项]  匹配条件及编辑命令 输入文本(文件)

选项:

  -n∶使用安静(silent)模式,只打印被sed命令处理过的结果行,不打印未被sed命令处理的行。
        -e∶对模式空间中的各行执行多重编辑,编辑命令的顺序将影响结果。
        -f∶用一个sed脚本对输入进行编辑, -f filename指定sed脚本的文件名。
        -r∶编辑条件中使用扩展的正则表达式
        -i∶直接修改源文件,而不在屏幕上输出

匹配条件:

1、采用正则表达式进行匹配(包括字符匹配、次数匹配、位置匹配)

2、行号匹配 (行号从1开始)

    beginNumber~step:从行号为beginNumber开始,每隔step步长处理一次。例如: sed
-n 2~5p 含义:从第二行开始匹配,隔 5 行匹配一次,即 2,7,12.......。

     beginNumber, +N:从 beginNumber这行到往下 N 行匹配,总共匹配 N+1 行。

     beginNumber,  ~N:从addr1行开始,直到行号为N的整数倍时结束。

     beginNumber, endNumber:行号为beginNumber到endNumber之间的行。

编辑命令:

命 令 说 明
i 在当前行之前插入一行
a 在当前行之后追加一行
c 用新文本覆盖(cover)当前行
d 删除匹配的行
g 默认只修改各行中首次匹配成功的位置,该参数意为整行搜索和替换
p 打印匹配的行
q 结束或退出 sed命令
反向匹配,即对未匹配成功的行执行sed命令
s 用一个字符串替换另一个字符串

案例:

输入文件为ceshi.txt

选项-n的作用:

默认情况下会将未被sed命令处理的行也打印出来

有了选项-n后只打印经sed命令处理的行

删除命令d:删除从第三行到最后一行内容

修改命令s:在以两位数字结尾的行后面追加.5,符号“&”表示取匹配模式。

 行追加命令a:

 多个sed命令组成的通道:前一个sed命令的输出作为下一个sed命令的输入

amosli@amosli-pc:~/learn/sed$ cat test.txt
hi,this is sed command test file
linux world is so amazing you will LOVE it!
amosli@amosli-pc:~/learn/sed$ cat test.txt | sed 's/linux/LINUX/' | sed 's/sed/SED/'
hi,this is SED command test file
LINUX world is so amazing you will LOVE it!

2、用sed命令直接编辑源文件

法一:通过选项-i直接编辑源文件,而不是在屏幕上输出

 法二:先将sed处理的结果重定向到另外一个零时文件,再覆盖源文件

本博文参考了:linux命令总结sed命令详解  linux shell 脚本攻略学习19--sed命令详解

【OS_Linux】三大文本处理工具之sed命令的更多相关文章

  1. 【OS_Linux】三大文本处理工具之grep命令

    grep(global search regular expression(RE) and print out the line,整行搜索并打印匹配成功的行 语法:grep  [选项]   搜索词  ...

  2. 文本处理三剑客之sed命令

    第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...

  3. 三大文本处理工具grep、sed及awk的简单介绍

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  4. shell之三大文本处理工具grep、sed及awk

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  5. 三大文本处理工具grep、sed及awk

    一.   用grep在文件中搜索文本 grep能够接受正则表达式,生成各种格式的输出.除此之外,它还有大量有趣的选项. 1.  搜索包含特定模式的文本行: 2.  从stdin中读取: 3.  单个g ...

  6. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  7. awk、sed、grep三大shell文本处理工具之sed的应用

    sed 流编辑器 对文本中的行,逐行处理 非交互式的编辑器 是一个编辑器 1.工作流程 1)将文件的第一行读入到自己的缓存空间(模式空间--pattern space),删除掉换行符 2)匹配,看一下 ...

  8. 文本处理三剑客之 Sed ——一般编辑命令

    sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...

  9. linux下sed命令笔记

    sed 流编辑器 Stream EDitor三大文本处理工具:grep,sed,awk 语法:sed 'AddressCommand' file ...Address:    1,StartLine, ...

随机推荐

  1. js框架:jQuery

    · jQuery是一个轻量级的“写的少,做的多”的JavaScript函数库(jQuery版本2以上不支持IE6,7,8) · jQuery 的功能概括: 1.html 的元素选取 2.html的元素 ...

  2. PAT甲级——1118 Birds in Forest (并查集)

    此文章 同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/89819984   1118 Birds in Forest  ...

  3. 设置导航栏 self.navigationItem.titleView 居中

    喜欢交朋友的加:微信号 dwjluck2013-(void)viewDidLayoutSubviews{ [self setDisplayCustomTitleText:@"每日头条&quo ...

  4. Spark Mllib里如何将trainDara训练数据文件里第一行是字段名不是数据给删除掉(图文详解)

    不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集

  5. Unity AssetBundle笔记

    1.入门: Resources:表示U3D自动将资源打成一个AssetBundle包,所有放在Resources下的文件夹都会打成一个AssetBundle包,资源非常大,Resources文件夹在真 ...

  6. 《javascript设计模式》笔记之第六章:方法的链式调用

    这一章要实现的就是jQuery的那种链式调用,例子: $(this).setStyle('color', 'green').show(); 一:调用链的结构: 首先我们来看一下最简单的$()函数的实现 ...

  7. mysql查询某个数据库某个表的字段

    1.查看字段详细信息 -- 查看详细信息 SELECT COLUMN_NAME "字段名称", COLUMN_TYPE "字段类型长度", IF(EXTRA=& ...

  8. 【C#】.net 导出Excel功能

    将DataSet对象导出成Excel文档 一.不带格式控制 void btnExport_Click(object sender, EventArgs e) { IList<string> ...

  9. dubbo源码阅读之集群(故障处理策略)

    dubbo集群概述 dubbo集群功能的切入点在ReferenceConfig.createProxy方法以及Protocol.refer方法中. 在ReferenceConfig.createPro ...

  10. git与GitHub(二)

    昨天在安装完git之后,出了一个问题,虽然暂时有解决的办法,但是由于电脑中了病毒并且配置低下等原因,这个问题的解决办法目前还有待考证.遇到的问题是这样的: 前提是想试一下git在命令行里的命令:于是: ...