Linux常用命令之sed

   2016-09-09 0
核心提示:标题:sed命令的使用 作用: sed(stream editer)是以行为单位处理文本数据,可以对数据按行进行选取(显示打印)、替换、删除和新增等功能。工作流程:sed是一个流编辑器,它可以对从标准输入流中得到的数据进行处理,然后把处理以后得到的结果输出到标准输出

标题:sed命令的使用

作用: sed(stream editer)是以行为单位处理文本数据,可以对数据按行进行选取(显示打印)、替换、删除和新增等功能。

工作流程:sed是一个流编辑器,它可以对从标准输入流中得到的数据进行处理,然后把处理以后得到的结果输出到标准输出,而标准输出通常关联到终端屏幕,因此处理后的结果也会显示到屏幕上。当然,也可以把标准输出重定向到文件,这样处理后的结果就会保存在磁盘文件中。

一、用法

sed [-nefr] [动作]

参数:

-n:使用安静模式,取消自动打印模式空间。在一般来自STDIN的数据一般都会被列出到屏幕上,但如果加上-n参数后,则只有经过sed处理的那一行才会被列出来

-e:直接在命令行模式上进行sed的动作编辑

-f:直接将sed动作写到一个文件内,-f filename可以执行filename内的sed动作

-i:直接修改读的文件内容,而不是由屏幕输出

动作说明:

1. [n1[n2]] function

1.1 n1,n2一般代表选择进行动作的行数,10,20代表动作在10,20行间执行。 如果不指定n1,n2,则表示后面的[动作]命令作用于与所有的行

1.2 除了用数字选择进行动作的行的范围,也可以用正则表达式,选择进行操作的行的范围

例如:打印显示所有以"#"开头的行 sed -n ' /^#/ p' filename

1.3 在进行替换命令的时候,一般需要用正则表达式所有行进行模式匹配,只有匹配成功的行,才会执行相应的动作操作

2. function有下面这参数:

[1] a : 新增

[2] c : 替换,c后面可以接字符串,这些字符串可以替换n1,n2之间的行

[3] d: 删除

[4] i: 插入,i之后可接字符串,这些字符串会在新的一行出现

[5] p: 打印,通常会和-n一起运行

[6] s: 替换

二、实例

例1:以行为单位的删除操作:

命令:nl test.da | sed '2,5d'

输出: Linux常用命令之sed

例2:在第2行后面添加 "Drink tea\n Drink beer"

命令: sed '2,a Drink tea \n Drink beer' test.da

输出: Linux常用命令之sed

例3:将第2~5行的内容替换成为"No,2-5 Number"

命令:sed '2,5c No,2-5 Number' test.da

输出: Linux常用命令之sed

例4:打印2~5行的内容

命令:nl index.html | sed -n '2,5p' 

输出: Linux常用命令之sed

例5:打印除2~5行外的其他行

命令:nl index.html |sed -n '2,5!p

输出: Linux常用命令之sed

解释:打印除了第2~5行外的内容,亦即打印第1行和第6行~最后一行,所以可以用命令: nl index.html | sed -n '1p;6,$p'

例6:从某一行开始,按照指定的间隔打印文件中的行,比如从第2行开始每隔3行显示文件的内容

命令:nl index.html | sed -n  '2~3p'

输出: Linux常用命令之sed

解释:单引号中的第一个数字表示起始行数,第二个数字表示间隔数

     例7:使用sed的s命令可以对文件中的字符串进行替换

假设现在要对如下的htm文件中的email地址从jerry@zulmma.com改成emma@zulmma.com以及对年份数字2012进行替换为2013

<html>

<title>My homepage</title>

<body>

<a href="mailto:jerry@zulmma.com">Email me!</a>

<br>

<p>Page created by:<a href="mailto:jerry@zulmma.com">jerry@zulmma.com</a></p>

<p>copyright @ 2012 mysite!</p>

</body>

</html>

  命令: sed -e 's/jerry@zulmma.com/emma@zulmma.com/g' -e 's/\b2012\b/2013/g' index.html

输出: Linux常用命令之sed

解释:sed命令中的-e选项表示指定多个编辑命令,也可以使用";"来连接多个编辑命令。例如,上面的命令也可以表示为: sed  's/jerry@zulmma.com/emma@zulmma.com/g;s/\b2012\b/2013/g' index.html

 g:表示全局替换

i:表示忽略大小写

\b字符串\b表示正则匹配单词

例8:使用sed命令实现对指定范围行内的进行行末或行首添加字符

假设要对某个文件的部分行首或行末添加一定字符或字符串

命令:sed '1,4s/^./# & /' index.html |nl

Linux常用命令之sed

解释:&符号正则表达是所匹配的内容

本文永久更新链接地址 http://www.linuxidc.com/Linux/2016-09/135046.htm

 
标签: Sed
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 用MobaXterm_Personal_12.0远程连接ubuntu虚拟机,并解决报错connection refused
    用MobaXterm_Personal_12.0远程连接ubuntu虚拟
    步骤一,获取虚拟机的IP地址。我这里用的是linux虚拟机,开机前将网络类型设置成“桥接网卡”。然后开启虚拟机。打开终端,输入如下命令,获得ip 192.168.23.149:ifconfig -a步骤二:打开MobaXterm工具,新建一个session:1. 创建一个有权限的用户:  2.
    02-10
  • linux的sed(增删改查)使用方法 linux教程:sed命令的用法
    linux的sed(增删改查)使用方法 linux教程:sed
    sed的增删改查的基本操作参考:https://www.cnblogs.com/0zcl/p/6855740.html01:增(a)2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 被写入到原文件中,如果需要修改原文件则需要用大 -i )  eg:修改原文件的内容。为了防止修改配置文件,
    02-10
  • SpringBoot和mybatis整合报错:Caused by: org.apache.ibatis.builder.BuilderException: Error creating documen
    SpringBoot和mybatis整合报错:Caused by: org.
    很明显,报错是xml有问题,于是去检查,发现:    由于粗心,保存的时候,按的太频繁,多按了个s在里面,导致启动报错!
    02-10
  • An incompatible version [1.2.10] of the APR
     这个链接的博主写的很详细,直接推荐:https://blog.csdn.net/zhoukikoo/article/details/80532483
    02-10
  • Caused by: org.apache.ibatis.binding.Binding
    Caused by: org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]  解决办法:1.其实这里的批量保存 ,mybatis 的xml文件中的parameterType 要求不高,可以是java.util.List,也可以是list集
    02-10
  • The APR based Apache Tomcat Native library
    tomat在linux服务器上启动报The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk1.6.0_26/jre/lib/i386/server:/usr/local/jdk1.6.0_26/jre/l
    02-10
  • Caused by: java.lang.ClassNotFoundException:
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils缺少jar包:commons-math3-3.6.jar 
    02-10
  • Mybatis异常:Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节
    Mybatis异常:Caused by: com.sun.org.apache.x
    Mybatis异常:Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效一、异常情况   二、造成原因  主要是字符编码问题三、解决办法   在pom.xml文件中加入如下内容: 1 plugins
    02-10
  • IIS访问站点,出现connection refused
    IIS访问站点,出现connection refused
    排查后,发现是因为使用了代理导致的。 需要设置 Don't use the proxy server for local addresses. 
    02-10
  • Google Chrome 55 Released – Install on RHEL/CentOS 7/6 and Fedora 25-20
    Google Chrome 55 Released – Install on RHEL
    Google Chrome is a freeware web browser developed by Google Inc. Google Chrome team proudly announced the release of Google Chrome 55 on December 01, 2016.The actual version is 55.0.2883.75 for Linux and Mac OS X/Windows operatin
    02-10
点击排行