sed– 用于筛选和转换文本的流编辑器

sed 用于筛选和转换文本的流编辑器
命令格式:sed [OPTION] {script} file
选项

  •       -n, –quiet, –silent 抑制模式空间的自动打印 

echo -e “abc\ndef” | sed ‘p’ #输出 abc # abc # def # def echo -e “abc\ndef” | sed -n ‘p’ #输出 abc # def

  • -e script, –expression=script 添加脚本到将要被执行的命令

echo -e “abc\ndef” | sed -n -e ‘s/abc/ghi/’ -e ‘p’ # 输出 ghi # def

  • -f script-file, –file=script-file 将脚本文件的内容添加到要执行的命令–follow-symlinks 处理符号链接-i[SUFFIX], –in-place[=SUFFIX] 编辑文件(如果提供了SUFFIX ,则对原文件先进行备份) 例如

sed -i_bak ‘1d’ aaa # 将先生成aaa的备份文件aaa_bak

  • -l N, –line-length=N 为’l‘命令指定希望的行折叠长度–posix 禁用所有的GNU扩展。-r, –regexp-extended 在脚本中使用扩展的正则表达式。-s, –separate 将文件视为单个独立的文件,而不是将它们视为整个连续的字符流。-u, –unbuffered 从输入中加载尽可能少量的数据并且更频繁的刷新–help 显示帮助并且退出–version 输出版本信息并退出
    命令0地址命令: label 为b和t命令定义标签。#comment 注释一行} 块结束符号0地址或者1地址命令= 打印当前的行号a \ text 追加新行 追加文本,(模式空间内的)每一行后都将追加(新行)反斜杠后的文本。 例如

echo “abc” | sed ‘a\def’ # 输出 abc # def

  • i \ text 插入新行 插入文本, (模式空间内的)每一行前都将插入(新行)反斜杠后的文本。 例如

echo “abc” | sed ‘i\def’ # 输出 def # abc

  • q [exit-code] 立即退出sed脚本不处理任何更多的输入, 除非自动打印是未禁用的情况下当前的模式空间将被打印。退出码参数是一个GNU扩展。Q [exit-code] 立即退出sed脚本不处理任何更多的输入。退出码参数是一个GNU扩展。r filename 追加从filename读取的文本R filename 追加从filename读取的一行。每次调用命令从文件中读取一行。这是一个GNU扩展。接受地址范围的命令{ 块命令的开始,b label 跳转到标签,如果label省略,跳转到命令结尾。c \ text 行替换 用text替换选中的行,每一行都将被反斜杠后的文本替换。 例如

echo -e “abc\ndef” | sed ‘c\ghi’ # 输出 ghi # ghi

  • d 删除模式空间。启动下一个循环。当模式空间有多行时,D命令每次只删除一行,然后从下一行开始新的循环,这里的下一行是模式空间中的第二行,所以不从输入读入新行。 然后从下一行开始循环,这里的下一行就是从输入读取的新行了。 例如

echo -e “abc\ndef\nghi\njkl” | sed -n ‘N;/abc\ndef/d;p’ # 输出 ghi # jkl # sed共执行了2次循环,第一次循环如下 # N追加了一行,模式空间内容为”abc\ndef”;删除模式空间;开始下一个循环,读入输入的第一行,模式空间内容为”ghi”; # 第二次循环如下 # N追加了一行,模式空间内容为”ghi\njkl”;删除操作未执行;打印模式空间。 echo -e “abc\ndef\nghi\njkl” | sed -n ‘N;/abc\ndef/D;p;p’ # 输出 def # ghi # def # ghi # sed共执行了2次循环,第一次循环如下 # N追加了一行,模式空间内容为”abc\ndef”;删除模式空间的第一行,模式空间内容为”def”;开始下一个循环; # 第二次循环如下 # N追加了一行,模式空间内容为”def\nghi”;删除操作未执行;打印模式空间,打印模式空间。

  • h H 复制/追加 模式空间到保持空间。g G 复制/追加 保持空间到模式空间。 例如

echo -e “abc\ndef” | sed -n ‘h;n;g;p’ # 输出 abc echo -e “abc\ndef” | sed -n ‘h;n;G;p’ # 输出 def # abc echo -e “abc\ndef” | sed -n ‘h;n;H;G;p’ # 输出 def # abc # def

 

  •  n N 读取/追加 输入的下一行到模式空间。

echo -e “abc\ndef” | sed -n ‘n;p’ # 输出 def echo -e “abc\ndef” | sed -n ‘N;p’ # 输出 abc # def

  • p 打印当前的模式空间。P 打印(的内容只)到当前模式空间的第一个换行符。只打印一行的意思。 例如,

echo -e “abc\ndef” | sed -n ‘N;/abc\ndef/p’ # 输出 abc # def echo -e “abc\ndef” | sed -n ‘N;/abc\ndef/P’ # 输出 abc

  • s/regexp/replacement/ 用replacement替换匹配的内容 尝试对模式空间匹配正则表达式。如果成功,用replacement替换掉匹配的部分。replacement可能包含特殊的字符&引用已匹配的那部分。特殊的转义\1到\9引用正则表达式中对应的子表达式。 例如

echo “abc” | sed ‘s/abc/def/’ # 输出 def echo “abc” | sed ‘s/abc/&def/’ # 输出 abcdef

 

 

 

 

原创文章,作者:nene,如若转载,请注明出处:http://www.178linux.com/88052

(0)
nenenene
上一篇 2017-08-14
下一篇 2017-08-15

相关推荐

  • Linux学习总结02—Linux的操作系统发展史(原创)

       我们都知道,在美国宾夕法尼亚大学,有那么一种计算机,叫ENIAC,这种机器耗电量是非常大,而且主机也是庞大,它诞生于1946年的2月14日的情人节,确实有纪念意义,就算是约炮也是拿着智能手机先摇一摇,好看就勾搭,不好看的就拉黑,这台计算机可并不是造福人类的,只是计算数据,我想,当时的情况是这样,在这台计算机没有出世之前,那帮工程师们…

    Linux干货 2016-10-29
  • M20-1权限作业

    1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作? [root@centos7 testdir]# ls -ld /testdir/ drwxr-xrw-. 3 root root 27 Aug  5 0…

    Linux干货 2016-08-05
  • 一、循环语句:for, while, until 循环执行:将某代码段重复运行多次重复运行多少次:循环次数事先已知循环次数事先未知有进入条件和退出条件 1.for……do……done for 变量 in 列表 ; do    循环体done 执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中…

    Linux干货 2016-08-19
  • 马哥教育网络班19期第二周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 cd:切换目录命令实例  cd [dirctory] 切换目录  cd .. 返回上一级目录  cd –  来回切换  cd ~  切换到家目…

    Linux干货 2016-06-19
  • LVM2:创建、使用、扩展、缩减、快照五步骤

    LVM2这是个关键的概念,还是从操作中比较容易理解 1、创建一个至少有两个PV组成的大小为40G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 注意点:在vmware中添加两块硬盘,但是并不能马上可以查看,需要扫描一下磁盘,磁盘未/dev/sdc,/dev/sdd 然后创建LVM的基…

    Linux干货 2016-09-05
  • 111-puppet

    一.运维层次分类 OS Provision:

    2016-12-04