Linux中sed的用法实践
Linux中sed的用法实践
参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html
http://www.fn139.com/list-2.html
sed命令行格式为:
sed [-nefri] 'command' 输入文本/文件
常用选项:
-n:取消默认的输出,使用安静(silent)模式。在一般的sed用法中,
所有来自STDIN的资料一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来
-e:进行多项编辑,及对输入行应用多条sed命令时使用。直接在指令模式上进行sed的动作编辑
-f:指定sed脚本的文件名。直接将sed的动作写在一个档案内,-f filename则可以执行filename内的sed动作
-r:sed的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
-i:直接修改读取的文件内容,而不是由屏幕输出
常用命令:
a: 新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)
c: 取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行
d: 删除,因为是删除,所以d后面通常不接任何内容
i: 插入,i后面可以接字符串,而这些字符串在新的一行出现(目前的上一行)
p: 列印,亦即将某个选择的资料打印出来。通常p会参与sed -n一起用
s:取代,可以直接进行替换工作。通常这个s的动作可以搭配正则表达式。例如1,20s/old/new/g
定址
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
地址是一个数字,则表示行号;是"$"符号,则表示最后一行。例如:
sed -n '3p' datafile # 只打印第三行
只显示指定行范围的文件内容,例如:
# 只查看文件的第100行到第200行
sed -n '100,200p' /data/mysql/mysql_3306/logs/slow.log
地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或者二者的组合表示。例如:
sed -i '2,5d' passwd
# 删除第2行到第5行
sed -i '/memcached/,/mysql/d' passwd
# 删除包含"memcached"和"mysql"的行之间的行
sed -i '/sshd/,10d' passwd
# 删除包含"/sshd"到第10行的内容
举例:
[root@my3-224 ~]# sed -i '1d' passwd # 删除第一行
[root@my3-224 ~]# sed -i '$d' passwd # 删除最后一行
[root@my3-224 ~]# sed -i '1,2d' passwd # 删除第1行到第2行
[root@my3-224 ~]# sed -i '2,$d' passwd # 删除第2行到最后一行
显示某行:
[root@my3-224 ~]# sed -n '1p' passwd # 显示第一行
[root@my3-224 ~]# sed -n '$p' passwd # 显示最后一行
[root@my3-224 ~]# sed -n '1,2p' passwd # 显示第一行到第二行
[root@my3-224 ~]# sed -n '20,$p' passwd # 显示第20行到最后一行
使用模式匹配查询
[root@my3-224 ~]# sed -n '/mysq/p' passwd # 查询包含关键字mysq所有行
[root@my3-224 ~]# sed -n '/\$/p' passwd # 查询包含$所在的所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
[root@my3-224 ~]# cat ab
Hello!
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
[root@my3-224 ~]# sed -i '1a drink tea' ab # 第一行后增加字符串"drink tea"
[root@my3-224 ~]# cat ab
Hello!
drink tea
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
[root@my3-224 ~]# cat ab
Hello!
ruby is me,welcome to my blog.
end
[root@my3-224 ~]# sed -i '1,3a drink tea' ab # 第一行到第三行后增加字符串"drink tea"
[root@my3-224 ~]# cat ab
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
[root@my3-224 ~]#
[root@my3-224 ~]# sed '1a drink tea\nor coffee' ab # 第一行后增加多行,使用换行 符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
[root@my3-224 ~]# sed -i '1a drink tea\nor coffee' ab # 第一行后增加多行,使用换行符\n
[root@my3-224 ~]# cat ab
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
[root@my3-224 ~]# sed -n 's/drin/BBB/g' ab # 替换drin为BBB
[root@my3-224 ~]# sed -i 's/drin/BBB/g' ab # 替换drin为BBB
[root@my3-224 ~]# cat ab
Hello!
BBBk tea
or coffee
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
Linux中sed的用法实践的更多相关文章
- Linux中Sed的用法
Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...
- linux中sed的用法【转】
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...
- [转载]linux中sed的用法
转自:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为: sed [-nefri] ‘ ...
- Linux中find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- [转]Linux中find常见用法示例
Linux中find常见用法示例[转]·find path -option [ -print ] [ -exec -ok command ] {} \;find命令的参 ...
- (转)linux 中特殊符号用法详解
linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员 $普通用户 脚本中 #!/b ...
- linux中sed命令(全面解析)
目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...
- linux中make的用法
一.linux中make的用法 目的: 基本掌握了make 的用法,能在Linux系统上编程.环境: Linux系统准备: 准备三个文件:file1.c, file ...
- Linux中“!"的神奇用法
前言 实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用.本文就来细数那些“!”的神奇用法. 执行上一条命令 例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一条命令: $ wher ...
随机推荐
- Vue学习目录
前面的话 近年来,前端框架发展火热,新的框架和名词不停地出现在开发者眼前,而且开发模式也产生了一定的变化.目前来看,前端MVVM框架的出现给开发者带来了不小的便利,其中的代表就有Angular.js. ...
- asp.net core mvc ajaxform submit files
<form id="form1" method="post" enctype="multipart/form-data" asp-co ...
- 【数学建模】day08-数理统计III
2. 回归分析 回归分析与曲线拟合区分. 曲线拟合是,根据得到的若干有关变量的一组数据,寻找因变量与(一个或几个)自变量之间的一个函数,使这个函数对那组数据拟合得好.通常,函数的形式可以由经验.先验知 ...
- H.264编码原理以及I帧B帧P帧
前言 ----------------------- H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在 ...
- BZOJ4032[HEOI2015]最短不公共子串——序列自动机+后缀自动机+DP+贪心
题目描述 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是. 一个串的“子序列”指的是它的可以 ...
- [HDU4635] Strongly connected
传送门:>Here< 题意:给出一张DAG,问最多添加几条边(有向)使其强连通分量个数大于1 解题思路 最少添加几条边使其强连通我们是知道的,非常简单,就是入度为0的点与出度为0的点的较大 ...
- 1286 unknown storage engine innodb
打开my.ini 找到 loose-skip-innodb 与 skip-innodb 前面加上 # 注释掉,重启mysql 服务
- iis默认文档
环境 W10 IIS10 输入网址后,显示一个默认首页,在IIS中,一般指定一个根目录下的文件例如index.html 如果要指定子目录下的文件, 例如让 /home/index.html 这个文件成 ...
- [Vani有约会]雨天的尾巴(树上差分+线段树合并)
首先村落里的一共有n座房屋,并形成一个树状结构.然后救济粮分m次发放,每次选择两个房屋(x,y),然后对于x到y的路径上(含x和y)每座房子里发放一袋z类型的救济粮. 然后深绘里想知道,当所有的救济粮 ...
- linux(fedora) 第三课
树形打印所有进程名:pstree pstree | grep pstree -A2 -B2(查看pstree前后两行) NI的值[-20,20) nice(改变NI的值):改变程序优先级 nice - ...