Sed命令的使用详细解释
Sed命令的使用详细解释
一:sed命令的简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
|
|
二:Sed的用法格式
Sed [options] ‘scripts’ inputfile
sed ‘pattern’ inputfile
pattern:中也可以有sed的子命令command,
另外强大的sed还支持正则表达式,和扩展正则表达式
三:sed命令常用[options]选项
- -n选项: quiet,silent,静默模式,不打印模式空间中的内容,而是仅打印和sed命令匹配的内容
suppress automatic printing of pattern space。
比如:sed -n ‘1,2p’ passwd

再如Sed ‘1,2p’ /etc/passwd

- -f:选项 sed -f filename
把sed要处理的命令写到一个文件中,使用-f选项
- -i选项:直接对源文件进行操作。
- -e选项:sed -e scripts或者expression
说明:-e选项可以支持sed进行多点编辑处理,使用多个scripts或者expression时,之间使用;分号隔开。
比如:

四: sed命令的pattern说明
Pattern中的格式:
①addr1 ,addrN/command (ddr1,addrN也可以是模式)
例如:打印 sed.txt文本中的第1行和第2行。

②在pattern中相关的子命令command
⑴d:删除指定 的行
例如删除sed.txt 文本中的前两行。

⑵p:模式空间中的文本在处理之前,每一次都会先显示
Print the current pattern space

⑶a \:在模式匹配到的行后面添加新的内容。
例如:在以#号开头的行的下一行添加两行\n 在行之间换行。

⑷i \ :在模式匹配到的行前面添加新的内容。
例如:在以#开头的行的上一行添加一行。

⑸!:表示对command的匹配范围取反
例如下面的例子,表示除了以#开通的行外,其他行都在其上面添加一行信息,一定要注意的是!号是对其前面的要匹配的范围取反。

再例如显示sed.txt 中前两行

⑹ 在数据流重定向中,我们把一个文件追加到另外一个文本中,只能追加到另一个文本的末尾,但是使用sed可以在另外一个文本添加到其他地方。
例如将sed2.txt中的内容追加到sed.txt文本中的第13行后面。

另外还可以匹配模式,例如将sed2.txt中的内容追加到sed.txt文本中以#开通的行后面。

⑺w:把匹配到的内容写入到某个地方
例如:将sed.txt中以#开通的行 以覆盖的方式写入到/root/sed2.txt文本中。

⑻s:s/模式/sting/g [i]: s的使用类似在vim编辑器中的末行模式中的使用。
参数g,利用模式匹配到的内容,用sting替换。i参数在模式匹配的过程中不区分大小写。或者是s@模式@sting/g ,或者是s%模式%sting/g等等具体情况,具体对待吧!!
比如:把sed.txt中开通是?的行,替换成字符串how ate you?

⑼&符号的引用功能:&符号可以引用前面匹配到的内容
例如: 将sed.txt中以th开头,后跟两个字符的单词后面添加OO

关于引用的另外一个用法:示例同上将sed.txt中以th开头,后跟两个字符的单词后面添加OO

⑽ n (N):Read/append the next line of input into the pattern space
例如


通过上面两个例子的对比我们不难发现:小写字母n的使用方法,n是覆盖方式的输入。
大写N则是以追加的方式输入



n与d一起使用的妙用

⑾ h(H)与g(G)的使用方法。
h: Copy pattern space to hold space:将模式空间中的内容复制到保留空间,覆盖方式进行
H: append pattern space to hold space:将模式空间中的内容覆盖到保留空间,追加方式进行
g: Copy hold space to pattern space:将保留空间中的内容复制到模式空间,覆盖方式进行
G: append hold space to pattern space:将保留空间中的内容复制到模式空间,追加方式进行
例如:


⑿sed 命令中的替换
y/source/dest/
例如:将sed.txt文本中的小写t和h,换成相应的大写T,H。

⒀ b:跳转:跳过某些符合的条件
例如
参考以上例子:将sed.txt文本中的小写t和h,换成相应的大写T,H。但是跳过以#号开通的行

⒁ :lable 在sed命令处理的过程中做标记(备注:lable可以是自己定义的标记)
这个做标记怎么使用呢?听起来有点迷茫,不过请看下面的里面
还是参考上面的例子,例如在sed.txt文本中将在非#号开通的行中a 换成大写的B,将以#开头的行中的 a 换成大写的A

转自:http://haicang.blog.51cto.com/2590303/901639
Sed命令的使用详细解释的更多相关文章
- memcached命令行操作详解,命令选项的详细解释
连接到memcached命令行下: telnet 127.0.0.1 11211 1.set / add / replace : 格式:<command> <key> < ...
- linux命令之ifconfig详细解释
依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置. 1.命令格式: ifconfig [网络设备] [参数] 2.命令功能 ...
- windows CMD命令大全及详细解释和语法
http://blog.csdn.net/god_7z1/article/details/51173067
- [转]sed命令详解
转载:http://blog.chinaunix.net/u/22677/showart_1076318.html 1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保 ...
- 【转载】sed命令详解
[转载自]http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html sed -i 把后面的操作后的文本输出回原文本 ...
- sed命令详解及应用实例
第一部分:Sed基本用法 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏 ...
- sed命令详解--转
1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...
- Sed 命令详解 正则表达式元字符
1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...
- sed命令解析[转载]
1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...
随机推荐
- 五十四.自定义镜像及仓库、持久化存储 、 Docker网络架构
1. 制作自定义镜像(base基础镜像,搭建共性环境) 基于centos镜像使用commit创建新的镜像文件 基于centos镜像使用Dockerfile文件创建一个新的镜像文件 1.1 使用镜像 ...
- 蓝牙4.0模块,AT指令集
一,LED状态 二,蓝牙模块有两种通信模式 1,AT指令模式 2,数据透传模式 三.AT指令程序设计 1.设置模块的名字 void usart3_send_str(char *pbuf) { whil ...
- CPU中断的机制概论
cpu的数学模型是图灵机,图灵机是一个线性运行指令的机器,它的执行序列是完全确定的,中断机制是使得cpu具有异步处理能力的机制,就是先暂停他的序列 来执行一些其他指令.具体来说就是,从硬件实现上,其 ...
- 查看Oracle表空间使用情况
1.查询表空间的总容量 as MB from sys.dba_data_files a group by a.TABLESPACE_NAME 2.查询表空间的空闲容量 select b.TABLESP ...
- UVALive 4976 Defense Lines ——(LIS变形)
题意:给出序列,能够从这序列中删去连续的一段,问剩下的序列中的最长的严格上升子串的长度是多少. 这题颇有点LIS的味道.因为具体做法就是维护一个单调的集合,然后xjbg一下即可.具体的见代码吧: #i ...
- webpack打包---报错内存溢出javaScript heap out of memory
今天, npm run build打包时,又报内存溢出了.所以记录一下,之前查了博客有一些解释. “报错CALL_AND_RETRY_LAST Allocation failed - JavaScri ...
- 一个数据库操作类,适用于Oracle,ACCESS,SQLSERVER
最近做了一个数据诊断的项目,里面自己写了一个数据库的操作类,包含:连接数据库.读数据表.执行SQL操作,释放数据库等组成,希望对大家有用,由于水平有限,若有错误或者代码不足地方欢迎指正,谢谢. ADO ...
- Mybatis generator配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...
- LINUX 上 实现SNTP (时间同步)
Network Time Protocol (NTP) 也是RHCE新增的考试要求. 学习的时候也顺便复习了一下如何设置Linux的时间,现在拿出来和大家分享 设置NTP服务器不难但是NTP本身是一个 ...
- Tornado实现监控数据实时展示
前言: It has been a while since I last updated my blogs. 使用Tornado开发一个实时监控信息系统,其中包括 CUP.内存.网卡.磁盘使用率. 涉 ...
