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

相关推荐

  • 学习宣言

    努力不只是为了更好的生活,更是为了证明自己! 只有逼自己一把,才能知道自己是可以做到的! 路漫漫其修远兮,吾将上下而求索。

    Linux干货 2016-12-26
  • 关于生命中出现的那个男人

    绝对真男人     一个人的一生,会遇到很多很多的男人,哦,也会遇到很多很多的女人,但是我们今天就谈谈男人吧.在这芸芸众生中对于我们这些志向于在linux求发展谋生存的人来说,有个男人会是所有linux爱好者的良师益友.这个男人就是man,这个男人是绝对的男人,因为他是在linux这个系统中无所不知的那个男人. &nb…

    Linux干货 2016-10-27
  • iptables防火墙

    Linux防火墙基础 在Internet中,企业通过架设各种应用系统来为用户提供各种网络服务,例如Web网站,电子邮件系统,FTP服务器,数据库系统等等,而防火墙就是用来保护这些服务器,过滤企业不需要的访问甚至是恶意的入侵。 Linux防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。Linux防火墙体系基于内核编码实…

    Linux干货 2017-01-10
  • linux文本编辑器,vim编辑器

    定义:文本(纯文本信息,必须是不加任何修饰的文本信息)编辑器 文本编辑器种类:                 行文本编辑器 :sed       &…

    Linux干货 2016-08-10
  • 网络基础

    #**计算机网络**##网络的特征– 速度、成本、安全性、可用性、可扩展性、可靠性、拓扑 ##**物理拓扑分类**– 总线型– 所有设备均可接受信号– 星型拓扑– 通过中心点传输,单一故障点– 扩展星型拓扑– 比星型拓扑的复原能力强– 环拓扑– 信号绕…

    Linux干货 2017-11-27
  • Linux下DNS服务器配置

    Linux下DNS服务器配置 简要描述各种DNS服务器的配置方法。包括正向解析DNS服务器、逆向解析DNS服务器、主从DNS服务器。 实验环境整体配置 关闭SElinux setenfore 0 清空防火墙 iptables -F 修改主配置文件 /etc/named.conf #监听本机外网端口 listen-on port 53 { 127.0.0.1;…

    Linux干货 2017-05-31