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 21:47
下一篇 2017-08-15 17:59

相关推荐

  • 软链接与硬链接的分析

    Linux引用硬链接与软链接,是为了实现文件的共享,更有隐藏文件路径、增加权限安全及节省存储等的好处。很多新手不知道软链接与硬链接的区别,今天大家一起总结它们的区别吧^_^ 一,硬链接 硬链接的特性可以体现出什么是硬链接: 通过索引节点来进行链接,文件要有相同的inode及data block 不允许跨分区创建 只有在同一文件系统中的文件之间才可以,不能交叉…

    2017-07-22
  • 马哥教育网络班22期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: 1) 命令行模式command mode) 控制屏幕光标的移…

    Linux干货 2016-09-26
  • N22-第八周作业

    第八周 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。      集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。    &n…

    Linux干货 2016-10-09
  • 计算机的发展及组成

    计算机发展 计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。 1946年,世界上诞生了第一台计算机,用于军事,计算弹道。 1946年数学家冯.诺依曼提出冯诺依曼体系结构,即所有计算机由运算器、控制器、存储器、输入设备、输出设备组成,所有遵循冯.诺依曼…

    Linux干货 2017-07-13
  • Linux进程和计划任务

                                                      &nbsp…

    系统运维 2016-09-21
  • 日志分析工具Awstats实战之Nginx篇-分析结果静态化

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1316979 前言: Awstats 是在 SourceForge 上发展很快的一个基原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处…

    Linux干货 2016-08-15