linux之sed的用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
sed [-nefri] 'command' filename
常用选项:
-n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。
但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e:直接在指令列模式上进行 sed 的动作编辑;
-f: 直接将 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.txt)
# sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,Welcome to my blog.
删除某行(对输入流进行操作--input stream)
[root@ant-colonies tmp]# sed '1d' sed.txt # 删除第一行
ruby is me,welcome to my blog.
end
ruby is me,Welcome to my blog.
[root@ant-colonies tmp]# sed '$d' sed.txt # 删除最后一行
Hello!
ruby is me,welcome to my blog.
end
[root@ant-colonies tmp]# sed '2,$d' sed.txt # 删除第二行到最后一行
Hello!
[root@ant-colonies tmp]#
显示某行
[root@ant-colonies tmp]# sed -n '1p' sed.txt # 显示第一行
Hello!
[root@ant-colonies tmp]# sed -n '2,$p' sed.txt # 显示第二行到最后一行
ruby is me,welcome to my blog.
end
ruby is me,Welcome to my blog.
模式查询
[root@ant-colonies tmp]# sed -n '/ruby/p' sed.txt # 查询包括关键字ruby的所有行
ruby is me,welcome to my blog.
ruby is me,Welcome to my blog.
[root@ant-colonies tmp]# sed -n '/^r.*g.$/p' sed.txt # 查询以字母'r'开头,'g.'结尾的行
ruby is me,Welcome to my blog.
[root@ant-colonies tmp]#
增加一行或多行字符串
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1a drink tea' sed.txt
Hello!
drink tea
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1,3a drink tea' sed.txt
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1,3a drink tea\nor coffee' sed.txt
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
drink tea
or coffee
end
drink tea
or coffee
ruby is me,welcome to my blog. [root@ant-colonies tmp]# cat sed.txt # 说明操作的是输入流
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]#
替换一行或多行
[root@ant-colonies tmp]# sed '1c Hill' sed.txt # 第一行替换为Hill
Hill
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1,2c Hill' sed.txt # 第一行到第二行替换为Hill
Hill
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
[root@ant-colonies tmp]# sed -n '/rub/p' sed.txt | sed 's/ruby/bird/' # 替换ruby为bird
bird is me,welcome to my blog.
bird is me,welcome to my blog.
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed -n '/ruby/p' sed.txt | sed 's/ruby//' # 删除ruby
is me,welcome to my blog.
is me,welcome to my blog.
插入(对源文件进行的操作)
[root@ant-colonies tmp]# cat sed.txt # 在文件sed.txt中最后一行直接输入"bye"
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed -i '$a bye' sed.txt
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]#
删除匹配行(对源文件进行的操作)
格式: sed -i '/匹配字符串/d' filename (注:若匹配字符串是变量,则需要"",而不是'')
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]# sed -i '/en/d' sed.txt
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]#
替换匹配行中的某个字符串(对源文件进行的操作)
格式: sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/' filename
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]# sed -i '/ru/s/ruby/birds/' sed.txt
[root@ant-colonies tmp]# cat sed.txt
Hello!
birds is me,welcome to my blog.
birds is me,welcome to my blog.
bye
[root@ant-colonies tmp]#
linux之sed的用法的更多相关文章
- Linux中sed的用法实践
Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...
- 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之sed用法
linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具 ...
- [转帖]linux之sed用法
linux之sed用法 https://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html docker images | awk ' ...
- linux之sed用法
参考 http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行 ...
- 【转】 linux之sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed ...
- linux中sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed ...
随机推荐
- Kill掉MySQL中所有sleep的client线程 (转)
vim killsleep.sh #It is used to kill processlist of mysql sleep #!/bin/sh while : do n=`mysqladmin ...
- Poj 2853,2140 Sequence Sum Possibilities(因式分解)
一.Description Most positive integers may be written as a sum of a sequence of at least two consecuti ...
- puppet前端管理工具foreman-proxy bind 127.0.0.1:8443问题解决
最近在玩foreman,发现部署foreman-proxy的时候,总是出现8443bind在127.0.0.1端口,导致无法访问的情况. 如下图: 经过strace -o log.txt bin/sm ...
- java代码简单练习
总结: package com.ds; import java.awt.Color; import java.awt.FlowLayout; import javax.swing.JFrame; im ...
- IIS应用池保持激活工具开发
之前的 开源一个定时任务调度器 webscheduler 中涉及的定时调用应用已经开始在正式环境中启用,发布到IIS下进行测试,发现一旦应用长时间没有访问(大约半个多小时)就会引发 Applicati ...
- j++与++j
(j++)+(++j)+(++j) 核心部分汇编代码 执行顺序j原始值为5,存放在栈的ebp-4中;q无初始值,存放在栈的ebp-8中先执行一次j自增赋值++j ;j=6执行第一个加法运算;值存放在C ...
- shell入门-系统和用户的配置文件
变量分为系统变量和用户自定义变量,他们的配置文件当然分为系统环境变量配置文件和用户环境变量控制文件 1.规定环境变量的配置文件 [root@wangshaojun 111]# vim /etc/pro ...
- 深入了解 Cloud Studio 开发在云端
Cloud Studio 为开发者提供了一个永不间断的云端工作站,不管有没有开发经验都可以毫无门槛的体验云端开发的乐趣,支持绝大部分编程语言.Cloud Studio 提供了完整的 Linux 环境, ...
- 微观SOA:服务设计原则及其实践方式
大 量互联网公司都在拥抱SOA和服务化,但业界对SOA的很多讨论都比较偏向高大上.本文试图从稍微不同的角度,以相对接地气的方式来讨论SOA, 集中讨论SOA在微观实践层面中的缘起.本质和具体操作方式, ...
- Spring入门第二十九课
事务的隔离级别,回滚,只读,过期 当同一个应用程序或者不同应用程序中的多个事务在同一个数据集上并发执行时,可能会出现许多意外的问题. 并发事务所导致的问题可以分为下面三种类型: -脏读 -不可重复读 ...