快速理解linux流编辑器sed命令
原创 杜亦舒性能与架构
之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的
sed 是 stream editor 的简写,是一种非交互式的流编辑器,默认情况下,sed并不会改变原文件本身,而只是对文本流进行修改,并将修改后的结果打印到标准输出中
与awk命令一样,sed处理文本时也是以行为单位,每处理完一行就立即打印出来,然后再处理下一行,直至全文处理结束
sed可做的编辑动作包括删除、查找替换、添加、插入、从其他文件中读入数据等
常用场景
(1)shell脚本中不便使用vi命令对文件进行编辑,sed命令则很方便
(2)文件太大,用vi编辑器打开文件有性能问题,就可以使用sed命令编辑
(3)有规律的文本修改,例如全文替换,使用sed命令非常快速
命令格式
sed [options] 'command' file
options 是参数
command 是命令集合
file 是要编辑的文件路径
下面通过一些例子来了解sed的基本用法
(1)删除
d 命令用来删除
$ sed '1d' Sed.txt
将Sed.txt的第一行删除后输出到屏幕
由于sed默认不修改原文件,如果希望保存修改后的文件则需要用重定向
$ sed '1d' Sed.txt > Sed2.txt
如果想直接修改文件,使用-i参数
$ Sed -i '1d' Sed.txt
这里不会有任何输出,而是直接修改了源文件,删除了第一行
删除指定范围的行
$ sed '1,3d' Sed.txt
删除第一行到最后行
$ sed '1,$d' Sed.txt
删除最后一行
$ sed '$d' Sed.txt
删除除指定范围以外的行(只保留第5行)
$ sed '5!d' Sed.txt
删除所有包含abc的行
$ sed '/abc/d' Sed.txt
/abc/ 是指定搜索条件
(2)查找替换
s 命令用来查找替换
$ sed 's/abc/ABC/' Sed.txt
替换Sed.txt中每行的第一个abc为ABC
也可以指定替换的个数,如想替换两个
$ sed 's/abc/ABC/2' Sed.txt
利用g选项,可以完成所有匹配值的替换
$ sed 's/abc/ABC/g' Sed.txt
/.../ 内部可以接收正则表达式,例如替换abc开头的
$ sed 's/^abc/ABC/' Sed.txt
(3)插入文本
i 命令可以在匹配行之前插入
a 命令可以在匹配行之后插入
在第二行前插入文本
$ sed '2 i test' Sed.txt
在第二行后插入文本
$ sed '2 a test' Sed.txt
也可以在匹配行的上一行插入内容
例如在匹配到abc的行的上一行插入
$ sed '/abc/i\test' Sed.txt
(4)打印
使用 p 命令可进行打印,这里使用sed命令时加 -n 参数,表示不打印没关系的行
打印出文件中的第一行
$ sed -n '1p' Sed.txt
使用p命令,只打印实际处理过的行,简化输出
$ sed -n 's/abc/ABC/p' Sed.txt
这个命令先替换abc为ABC,然后只打印出替换过的行
快速理解linux流编辑器sed命令的更多相关文章
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- Shell 基础 -- 流编辑器 sed 详解
一.流编辑器 sed 与命令 sed Linux 中,常使用流编辑器 sed 进行文本替换工作.与常使用的交互式编辑器(如vim)不同,sed 编辑器以批处理的方式来编辑文件,这比交互式编辑器快得多, ...
- day14 linux三剑客之sed命令
day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...
- Linux vi 编辑器常见命令的使用
Linux vi 编辑器常见命令的使用 Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Win ...
- Linux中使用sed命令或awk命令修改常规配置文件
一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...
- linux三剑客之sed命令
一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...
- 流编辑器sed
sed与grep一样,都起源于老式的ed编辑器,因其是一个流编辑器(stream editor)而得名.与vi等编辑器不同,sed是一种非交互式编辑器(即用户不必参与编辑过程),它使用预先设定好的编辑 ...
- Linux Shell编程 sed命令
概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...
- shell脚本学习笔记 (流编辑器sed)
sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用很普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出. sed不 ...
随机推荐
- [转载]c++常用字符串操作函数
原文地址:c++常用字符串操作函数作者:Valsun 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source ...
- Codeforces Round #344 (Div. 2) D. Messenger kmp
D. Messenger 题目连接: http://www.codeforces.com/contest/631/problem/D Description Each employee of the ...
- concat函数,concat_ws函数,group_concat函数,repeat()函数
MySQL中concat函数使用方法:CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- Android——Activity and Service
参考博客:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html http://www.cnblogs.com/feisky/ar ...
- 将WPF版的弹幕播放器给优化了一下
年前较闲的时候研究了一下WPF的性能优化,练手的时将之前写的弹幕播放器给重新写了一下.年前的时间不大够,没有写完,这两天接着弄了一下,基本上弄得差不多了. 主要重写了底层的渲染算法,优化后效果还是非常 ...
- easyui时间控件设置为可清空——jquery-easyui-1.3.3(这个版本还没有buttons,网上的好多博文都是1.3.5之后的版本)
效果图: 更改的源码jquery.easyui.min.js 11358行: var _858=$("<div class=\"datebox-button\"&g ...
- JQUERY中的事件处理:RETURN FALSE、阻止默认行为、阻止冒泡以及兼容性问题
return false 在jQuery中,我们常用return false来阻止浏览器的默认行为,那"return false"到底做了什么? 当你每次调用"retur ...
- [转]SQL SERVER 函数组合实现oracle的LPAD函数功能
本文转自:http://blog.csdn.net/a475701239/article/details/8295976 在写存储过程的时候遇到个问题,就是 将数字转成4位右对齐的字符串,不 ...
- 轻松编写 C++ 单元测试
单元测试概述 测试并不只是测试工程师的责任,对于开发工程师,为了保证发布给测试环节的代码具有足够好的质量( Quality ),为所编写的功能代码编写适量的单元测试是十分必要的. 单元测试( Unit ...
- SparkSQL之更改表结构
本文篇幅较短,内容源于自己在使用SparkSQL时碰到的一个小问题,因为在之后的数据处理过程中多次使用,所以为了加深印象,在此单独成文,以便回顾. 场景 在使用SparkSQL进行数据处理时,碰到这样 ...