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 ...
随机推荐
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
请定义一个宏,比较两个数的a.b的大小,不能使用大于.小于.if语句 方法一: #define max(a,b) ((((long)((a)-(b)))&0x80000000)?(b): ...
- CountDownLatch分析
1 什么是CountDownLatch呢? 先看看官网的定义 :一种同步帮助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成. 现在由我来解释什么是CountDownLatch吧:比如说我 ...
- [xdoj1029]求解某个数的最高位和最低位
解题关键: 1.最高位求法 long long int x=n^m; 式子两边同时取lg lg(x)=m*lg(n): x=10^(m*lg(n)): 10的整数次方的最高位一定是1,所以x的最高位取 ...
- 1. sqlmap超详细笔记+思维导图
sqlmap思维导图: 基本操作笔记: -u #注入点 -f #指纹判别数据库类型 -b #获取数据库版本信息 -p #指定可测试的参数(?page=1&id=2 -p "page, ...
- opencv使用findContours等方法出现内存损坏之类的不能调用问题
错误现象: 编译项目,如果该项目是debug,则在链接器输入配置opencv_world310d.lib如果是release则输入opencv_world310.lib,输入其中一个,多输,输错运行不 ...
- 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)
项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则 ...
- 聚类算法(二)--BIRCH
BIRCH (balanced iterative reducing and clustering using hierarchies)(名字太长不用管了) 无监督,适合大样本的聚类方法.大多数情况只 ...
- laravel 导出插件
转发:https://blog.csdn.net/gu_wen_jie/article/details/79296470 版本:laravel5 php 5.6 安装步骤: 一.安装插件 ①.首先在L ...
- hortonworks docker 安装
1. 下载并解压安装脚本: Hortonworks Data Platform (HDP) for Docker 2. 进入到解压后的目录,运行下面的命令,{HDPversion} 需要替换成相应目 ...
- Hadoop eclipse plugin
我的eclipse是在win7上,hadoop在win7里的虚拟机里的ubuntu上,为了方便起见,想在eclipse上安装hadoop的插件,主要参考 https://my.oschina.net/ ...