Linux常用命令之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'
输出:
例2:在第2行后面添加 "Drink tea\n Drink beer"
命令: sed '2,a Drink tea \n Drink beer' test.da
输出:
例3:将第2~5行的内容替换成为"No,2-5 Number"
命令:sed '2,5c No,2-5 Number' test.da
输出:
例4:打印2~5行的内容
命令:nl index.html | sed -n '2,5p'
输出:
例5:打印除2~5行外的其他行
命令:nl index.html |sed -n '2,5!p
输出:
解释:打印除了第2~5行外的内容,亦即打印第1行和第6行~最后一行,所以可以用命令:nl index.html | sed -n '1p;6,$p'
例6:从某一行开始,按照指定的间隔打印文件中的行,比如从第2行开始每隔3行显示文件的内容
命令:nl index.html | sed -n '2~3p'
输出:
解释:单引号中的第一个数字表示起始行数,第二个数字表示间隔数
例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
输出:
解释: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的更多相关文章
- Linux常用命令之sed(2)
Sed SED的英文全称是 Stream EDitor,它是一个简单而强大的文本解析转换工具,在1973-1974年期间由贝尔实验室的Lee E. McMahon开发,今天,它已经运行在所有的主流操作 ...
- Linux常用命令:sed
本文记录的是自己在学习<Linux私房菜>中正则表达式的笔记. 关于行尾符$ 如果文件本身没有内容,比如使用touch新建的文件,那么$将会没有意义.例如下面操作: 先使用touch新建了 ...
- linux 常用命令大全
linux 常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统 ...
- Linux常用命令速查备忘
Linux常用命令速查备忘 PS:备忘而已,详细的命令参数说明自己man 一. 启动,关机,登入,登出相关命令 [login] 登录 [logout] 登出 [exit] 登出 [shutdown ...
- Linux常用命令大全(非常全!!!)
Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...
- 【原创】Linux基础之linux常用命令之文本替换
linux常用命令之文本替换 1 vi vi test_file :%s/h/h1/g 注释:全文替换,将h替换为h1 :1,4s/h/h1/g 注释:将第1行到第4行的h替换为h1 :%s/\n/, ...
- 转载Alpine Linux常用命令
Alpine Linux常用命令 目录 一:Alpine Linux开启SSH远程登陆 1.简介: 2.配置 3.配置命令 4.重启服务 二:Alpine Linux源管理 1.简介 2.国内源简介: ...
- 【转载】Linux常用命令
Linux常用命令大全(非常全!!!) 转载出处:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html 系统信息 arch 显示机器的处理器架构( ...
- Linux常用命令-文本查看篇
前言 Linux常用命令中,除了cat还有很多其他用于文本查看的命令.本文将简单介绍一下这些文本查看的命令. 全文本显示--cat cat可能是常用的一个文本查看命令了,使用方法也很简单: cat f ...
随机推荐
- Apache Kafka:下一代分布式消息系统
[http://www.infoq.com/cn/articles/apache-kafka/]分布式发布-订阅消息系统. Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交日 ...
- 《Secrets of the JavaScript Ninja》:JavaScript 之运行时代码
最近,在阅读 jQuery 之父 John Resig 力作:Secrets of the JavaScript Ninja(JavaScript忍者秘籍).关于第九章提及的 JavaScript 之 ...
- 3DTouch-ShortcutItem - iOS9 - xcode7
据说苹果某个神秘的团队闭门潜心研发多年的3DTouch终于,应用在iOS9上,且公开了API. 在系统主界面用力按压 APP 图标,如上会出现自定义菜单 有两种方法可以实现一.代码(这种方法也是可以动 ...
- __ARM_PROFILE_M__ __CORE__ __ARMVFP__ __LITTLE_ENDIAN__
__ARM_PROFILE_M__ Description An integer that is set based on the --cpu option. The symbol is set to ...
- CORTEX -M3 : Registers in depth
http://www.zembedded.com/cortex-m3-registers-in-depth/ Thanks for the overwhelm response you show in ...
- 防火墙没关导致 ORA-12541: TNS: 无监听程序
电脑用着用着突然Oracle就报出下面的错误,按照网上的办法搞了几个小时都没有搞好. Oracle重装了好几次也没用,实在没办法又花了个多小时装了个虚机,结果也是同样的错误. 于是恍然大悟,可能是物理 ...
- shared_ptr注意事项
对shared_ptr的Copy构造和Copy赋值,会改变引用计数,但是对shared_ptr中原始资源的Copy构造和Copy赋值,不会改变引用计数.因此存在下面的危险情况: 1.获取资源时,初始化 ...
- iOS 设计模式之抽象工厂
设计模式是程序提升的必备知识,这里说下iOS怎样实现抽象工厂设计模式.本文是看过oc编程之道这本的抽象工厂这章后写出的,假设不明确原理能够看看那本书. TestView.h首先创建一个视图 // // ...
- 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因
声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...
- Deep Learning(深度学习)学习笔记整理系列之(五)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...