是对文件中的每一行进行处理,不会对源文件进行修改

sed --version

sed '11d' sed_file

sed -n '/[Bb]erry/p' sed_file (由于设置了n,所以只打印出有Berry/berry的行)

sed  '/[Bb]erry/p' sed_file(没有设置n,则会输出所有的行,同时有Berry/berry的行会输出两次)

sed 's/berry/bbery/' sed_file

sed '/^berry/p' sed_file (打印所有以berry开头的那一行)

sed '/[^b]erry/p' sed_file (打印出所有不包含以b开头,并且紧跟着erry的行,这种匹配是根据一个单词来说德)sed -n '/.erry/p/' sed_file (.代表是任意非换行的字符)

x\{m\} 重复字符X,M次
x\{m,\} 重复字符X,至少M次
x\{m,n\}a 重复字符X,至少M次,不多于N 次
sed '/r\{2\}/p sed_file (匹配2个r,至少有2个r 或 2~10个r 的行)

sed '3,$d' sed_file (删除第3行到最后一行,其他的行被打印)

\(..\) 保存匹配的字符         s/\(love\)able/\1rs/        标签标记出来的部分被保存在1号标签中,为了方便在后面引用,使用\|来表
                          示,\|将被标签标记出来的模板替换,从表达式的最左边开始,向右最多可以使用9个标签。
                          例如,love被保存在寄存器1当中,并稍后用做字符串替换。loveable就被替换为lovers 3

#sed -n 's/\(Mar\)got/\1ianne/p' datafile
north NO Marianne Weber 4.5 .89 5 9
说明:

  模板Mar 被包含在一对括号内,并在特殊的寄存器中保存为标签1(tag1),它将在后面作为\1
替换字符串。Margot替换所有的Marianne。

#sed -n 's/\(berry\)/\1able/gp' sed_file   (同理,所有的berry都将被berryable所替换,并打印出这些被处理的行)

#sed 's/berry/&able/gp' sed_file (结果与上相同)

sed 's#3#88#g' datafile (#相当于/,作为搜索字符串和替换字符串的分隔符,默认分隔符是/,但是在s 命令使用
              的情况下可以改变。不论什么字符紧跟着s 命令都被认为是新的分隔符。这个技术在搜索包含斜杠
              的模板时非常有用,例如搜索时间和路径的时候。)

sed -n'/west/,/east/p' datafile(所有在模板west 和east所确定的范围内的行都被打印。如果west出现在east后面的行中,从west
开始到下一个east,无论这个east出现在那里,二者之间的行都将被打印,即使从west开始到了文件的末尾如果还没有出现east,

那么从west 到末尾的所有的行都将打印。箭头所表示的就是被打印的范围。)

sed '/west/,/east/s/$/**VACA**/' datafile (对于模板east 和west 之间的行,每行的末尾用字符串**VACA**替换,下一行都被移动到该字
符串的后面)

多点编辑:e 命令

sed -e '1,3d' -e 's/Berry/berry/p' sed_file(先删除,后进行字符串替换)

因为两个命令是在同一行执行(也就是说,两个命令都是在当前行的固定空间中执行),所以命令的执行顺序将影响命令的结果。

sed -–expression='s/TB/Tobias/' -–expression='/north/d' datafile

从文件读入:r命令

sed '/Suan/r newfile' datafile

命令 r 表示从文件中读取指定的行。newfile 文件的内容被读入输入文件datafile 中,显示在与
suzan相匹配的行的后面。如果suzan在不止一行中出现,newfile的内容就将显示在所有匹配行的下
面。

写入文件:w命令

sed –n '/north/w newfile2' datafile

命令w表示把一个指定的行写入文件。所有包含north的行都将被写入名为newfile2的文件中。

追加:a 命令(a\)

sed '/^north /a\\
--->THE NORTH SALES DISTRICT HAS MOVED<---' datafile

命令a表示追加。字符串--->THE NORTH SALES DISTRICT HAS MOVED <---将被追加到以
north开头,且north后面有空格的行的后面。需要被追加的文本必须写在命令行中追加命令的后面。
sed要求在命令a后面有一个反斜杠。第二个反斜杠表示在TC Shell下转义换行符,这样才能在
下一行完成引用。a如果被追加的不止一行,除了最后一行,每一行也都要用反斜杠结束。

插入:i命令

sed '/eastern/i\\
NEW ENGLAND REGION
--------------------------------' datafile

命令 i 是插入命令。如果模板eastern 被匹配,i 命令就把反斜杠后面的文本插入到包含eastern
的行的前面。除了最后一行,每一行插入完成后都需要反斜杠(额外的反斜杠是用来满足TC Shell
的要求的)。

下一个:n命令

sed '/eastern /{ n; s/AM/Archie/; }' datafile

如果模板eastern 匹配了某一行,n 命令就移动到输入文件中该行的下一行,替换这一行的模式
空间。即用Archie替换AM,打印该行,然后再继续。

变形:y命令

sed '1,3y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKL
MNOPQRSTUVWXYZ/' datafile

对于1~3行,y命令把所有的小写字符转变为大写字符。正则表达式元字符不能使用这个命令。

退出:q命令

sed ‘5q' sed_file

sed '/Lewis/{ s/Lewis/Joseph/;q; }' datafile(在Lewis匹配的行,先用Joseph替换Lewis,然后退出sed程序)

保持和获取:h命令和g命令

sed -e '/northeast/h' -e '$G' datafile (如果有多行northeast匹配,那么只会把最近的保存进保持缓冲区的字符串追加到模式空间中)

在sed处理的文件的时候,每一行都被保存在一个叫作模式空间(pattern space)的临时缓冲区
中。除非行被删除或者输出被取消,否则所有被处理过的行都将打印在屏幕上。接着模式空间被清
空,并存入新的一行等待处理。在这个例子中,包含模板的northeast 行被找到,并被放入模式空间
中,h命令将其复制并存入一个称为保持缓冲区(holding buffer)的特殊缓冲区内。在第二个sed 结
构中,当达到最后一行后,G命令告诉sed 从保持缓冲区中取得该行,然后把它放回到模式空间中,
且追加到现在已经存在于模式空间中的行的末尾——在这个例子中,就是追加到最后一行。简单来
讲:任何包含模板northeast 的行都将被复制并追加到该文件的末尾。

sed -e '/northeast/h' -e '$g' datafile (g和G的区别,g 会替换掉最后一行,而G是追加到其后面)

h命令和x命令

sed –e '/patricia/h' -e '/Margot/x' datafile

命令x表示互换模式空间和保持缓冲区的内容。当模板patricia被匹配,该行将被保存到保持缓
冲区中。当包含Margot 的行被找到,模式空间将与保持缓冲区交换彼此的行。简单地说,就是包含
Margot的行被包含patricia的行替换了。

-f sed 脚本

sed -f scrript_file sed_file

sed –n 'l' sed_file 打印所有包含不能打印字符的行

Learn sed using these command on Linux(流线式编辑器——sed)的更多相关文章

  1. centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课

    centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符  通配符 特殊符号. * + ? 总结  问加星 cat -n  nl  输出文件内容并加上行号 alias放~ ...

  2. [Shell]sed命令在MAC和Linux下的不同使用方式

    ---------------------------------------------------------------------------------------------------- ...

  3. mac上执行sed的编辑 -i命令报错sed: 1: "test.txt": undefined label ‘est.txt’或sed: 1: "2a\test\": extra characters after \ at the end of a command

    问题一 sed编辑命令:[sed -i 's/a/b/g' test.txt]   报错:sed: 1: "test.txt": undefined label 'est.txt' ...

  4. sed: 1: “…”: invalid command code on Mac OS

    昨天因为项目中有很多文件的同一个变量需要批量替换成另一个,想用sed做这个.Linux 这样其实就可以了 ~# sed -i “s/string_old/string_new/g” grep -rl ...

  5. Linux常用命令之sed(2)

    Sed SED的英文全称是 Stream EDitor,它是一个简单而强大的文本解析转换工具,在1973-1974年期间由贝尔实验室的Lee E. McMahon开发,今天,它已经运行在所有的主流操作 ...

  6. Linux命令学习-sed

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  7. Sending Email from mailx Command in Linux Using Gmail’s SMTP

    The mailx or mail command in Linux is still providing service for guys like me, especially when we n ...

  8. Linux文件编辑之sed命令

    文件编辑之sed命令 sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为模式空间 (pattern space ...

  9. Using Android Phone to recover SD card formatted with DD command under linux

    Using Android Phone to recover SD card formatted with DD command under linux 1. Formatted a sd card ...

随机推荐

  1. 读《深入理解Java虚拟机》有感——第二部分:虚拟机类加载机制

    一.类加载过程       执行时机:编译程序——>执行程序(JVM启动.程序运行),类加载发生在程序运行期间       各个阶段:分为加载阶段.连接阶段(验证.准备.解析).初始化.使用.卸 ...

  2. Bluestacks 使用

    Bluestack介绍 一款能够在PC模拟Android的好用模拟器 官网:http://www.bluestacks.cn/ 早在2012年就使用上它了,但一直未发现他的许多优点,在使用过其它的两款 ...

  3. webBroser获取cookie

    //取当前webBrowser登录后的Cookie值 [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError ...

  4. Volley(三)—— ImageRequest & Request简介

    Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...

  5. Python-装饰器详解

    初学python,装饰器是什么玩意儿? 1:装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. 2:至少两层函数 方式一: 理解方式 ...

  6. Linux 进程通信(共享内存区)

    共享内存是由内核出于在多个进程间交换信息的目的而留出的一块内存区(段). 如果段的权限设置恰当,每个要访问该段内存的进程都可以把它映像到自己的私有地址空间中. 如果一个进程更新了段中的数据,其他进程也 ...

  7. 项目移植将eclipse里面的项目移植到intellij idea里面

    怎么关联多个库 .  A B C D,A依赖BC,D依赖A,怎么搞? 注意: as和idea里面,project是工作空间的意思,这里面model才是项目. 打开主项目D 打开已经存在的model 导 ...

  8. php基础06:运算符

    <?php //1.PHP 字符串运算符: 串接 $str1 = "gao"; $str1 = $str1."xiong"; echo $str1; ec ...

  9. 项目中使用RDLC报表

    原文地址:http://www.cnblogs.com/wuhuacong/p/4109833.html RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用 ...

  10. ios 定位 航向检测

    // ViewController.m // CoreLocation框架的基本使用—定位 // 注意 点: 1.设置地位可用 2. 设置允许本程序定位(对弹出的框,允许即可) 3. 为模拟器 设置位 ...