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对象—类型和属性特性

    前言 权威指南中摘要的,工作中用不到的,重要的js基础. 三类对象两类属性 内置对象(native object) 是由ECMScript规范定义的对象或者类.例如:函数,数组,日期,正则... 宿主 ...

  2. mysql 配置大小写敏感后不能重启

    [问题现象] 在mysql的配置文件my.cnf配置lower_case_table_names=1后不能重启mysql,提示mysql.serviceJob for mysql.service fa ...

  3. Django的锁和事务

    Django的锁和事务 锁 select_for_update(nowait=False, skip_locked=False) 返回一个锁住行直到事务结束的查询集,如果数据库支持,它将生成一个 SE ...

  4. Codeforces Round #547 (Div. 3) D. Colored Boots

    链接:https://codeforces.com/contest/1141/problem/D 题意: 给连个n长度的字符串. 求两个字符串相同字符对应位置的对数,并挨个打印. 字符:?可以代替任何 ...

  5. 洛谷P2470||bzoj1068 [SCOI2007]压缩

    bzoj1068 洛谷P2470 区间dp入门题?只要注意到每个M“管辖”的区间互不相交即可 错误记录:有点小坑,比如aaaacaaaac最优解为aRRcR(意会坑在哪里),踩了一次 #include ...

  6. 在SpringBoot中用SpringAOP实现日志记录功能

    背景: 我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息. 代码类似于: logger.info(request.getRequestUrl( ...

  7. 微信小程序---图片上传+服务端接受

    原文地址:http://blog.csdn.net/sk719887916/article/details/54312573 微信小程序,图片上传,应用地方-修改用户信息的头像. 详细代码: 小程序的 ...

  8. 前端上传插件Plupload的实际使用(个人实操)

    一个主要的页面,其中包裹了一个iframe页面,在项目中,这个iframe页面包裹在主页面的div标签中,主要用于上传文件附件. 用的是plupload.full插件,主要引入以下几个js: jque ...

  9. Android Studio 遇到的java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessExce问题

    在将一个Eclipse的项目转移到AndroidStudio的过程中,碰到了的问题如下: Error:Execution failed for task ':learnChinese:mergeDeb ...

  10. andorid 向上滑动控制标题栏显示

    要实现这样的功能,原理不难,监听滑动距离再设置标题栏的透明度 下面是监听一个带头view的list实现核心代码: mbar是标题栏 mListView.setOnScrollListener(new ...