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命令的使用详细解释的更多相关文章

  1. memcached命令行操作详解,命令选项的详细解释

    连接到memcached命令行下:  telnet 127.0.0.1 11211 1.set / add / replace : 格式:<command> <key> < ...

  2. linux命令之ifconfig详细解释

    依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置. 1.命令格式: ifconfig [网络设备] [参数] 2.命令功能 ...

  3. windows CMD命令大全及详细解释和语法

    http://blog.csdn.net/god_7z1/article/details/51173067

  4. [转]sed命令详解

    转载:http://blog.chinaunix.net/u/22677/showart_1076318.html   1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保 ...

  5. 【转载】sed命令详解

    [转载自]http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html   sed -i  把后面的操作后的文本输出回原文本   ...

  6. sed命令详解及应用实例

    第一部分:Sed基本用法 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏 ...

  7. sed命令详解--转

    1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  8. Sed 命令详解 正则表达式元字符

    1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  9. sed命令解析[转载]

    1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

随机推荐

  1. 轮播图的3个常见bug,即处理bug思路及其解决办法

    1,下载jquery.js文件,并且导入 2,在下面的img中写入可以用图片路径 <!-- 第一个bug: 刚打开页面时,按一下左键图片没切换,再按第二下时才切换图片. 第二个bug: Ctrl ...

  2. mouseover([[data],fn])

    mouseover([[data],fn]) 概述 当鼠标指针位于元素上方时,会发生 mouseover 事件. 该事件大多数时候会与 mouseout 事件一起使用.直线电机选型 注释:与 mous ...

  3. nios ii 13 主程序的函数可以用Open Declaration 查看,但是编译的时候却说 undefined reference to 。。。这是为什么?

    在做12864 ip 核试验时,写了三个文件第一个是时序文件QC12864.v第二个是QC12864.H这个文件主要包括声明和宏定义,第三个文件是QC12864.c这个文件包含函数的定义.详细的请看  ...

  4. 关于VGA显示实验的问题

    今天做了一个关于VGA的显示实验,但是由于产生的25M时钟不正确所以一直没有图像产生.刚开始的程序如下 虽然仿真的时候出现了时序,但是在下载到硬件的时候不正确. 后来改成 结果就正确了. 另外之前关于 ...

  5. 【概率论】2-3:贝叶斯定理(Bayes' Theorem)

    title: [概率论]2-3:贝叶斯定理(Bayes' Theorem) categories: Mathematic Probability keywords: Bayes' Theorem 贝叶 ...

  6. C到汇编[1]

    这篇文字解释这个问题:C语言函数调用在汇编语言是怎么实现的?栈模型很好的满足了函数调用的需求,以最简单的函数调用说明. : int add2(int a, int b){return a+b;} 00 ...

  7. 第十七节:Runnable创建线程,Thread创建线程,唤醒线程和计数器多线程,线程同步与等待

    Runnable创建线程 public class RunnableDemo implements Runnable{ @Override public void run(){ int i = 1; ...

  8. pytest学习笔记(一)

    这两天在学习pytest,之前有小用到pytest,觉得这个测试框架很灵巧,用在实现接口自动化(pytest+requests)非常的轻便,然后很有兴致的决定学习下,然后又发现了pytest-sele ...

  9. python的openpyxl的使用笔记

    openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读 ...

  10. Java学习之路(2)

    Java中的标识符及命名规范 一.标识符可以使用字母.下划线.$.数字及其他们的组合命名,不能以数字开始,其他的3中可以起头.关键字和保留字不能作为标识符使用; 二.Java是大小写敏感的,也就是说i ...