参考 http://man.linuxde.net/sed
- x
- h
- And curly braces {} are used to group multiple SED commands
下面的都是摘抄自 http://man.linuxde.net/sed 仅帮助回忆 具体查看man
- a\ 在当前行下面插入文本。 有\ 表示将增加的内容 另起一行
- i\ 在当前行上面插入文本。
- c\ 把选定的行改为新的文本。
- d 删除,删除选择的行。
- D 删除模板块的第一行。 删除 pattern buffer 里面的第一行
- s 替换指定字符
- h 拷贝模板块的内容到内存中的缓冲区。
- H 追加模板块的内容到内存中的缓冲区。
- g 获得内存缓冲区的内容,并替代当前模板块中的文本。
- G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
- l 列表不能打印字符的清单。
- n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
- N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
- p 打印模板块的行。
- P(大写) 打印模板块的第一行。
- q 退出Sed。
- b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
- r file 从file中读行。
- t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
- T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
- w file 写并追加模板块到file末尾。
- W file 写并追加模板块的第一行到file末尾。
- ! 表示后面的命令对所有没有被选定的行发生作用。
- = 打印当前行号码。
- #把注释扩展到下一个换行符以前。

d

delete (clears) the current pattern space, and restart the program cycle without processing the rest of the commands and without printing the pattern space.

D

delete the contents of the pattern space up to the first newline, and restart the program cycle without processing the rest of the commands and without printing the pattern space.

{}

在Mac 里面最后一个符号一定要写 ;

dingmac@cos-git$ echo -e "zhangsan\nlisi\n\n howa\naasdasdas" | sed -n '/how/{x;N;p}'
sed: 1: "/how/{x;N;p}": extra characters at the end of p command必须写成
dingmac@cos-git$ echo -e "zhangsan\nlisi\n\n howa\naasdasdas" | sed -n '/how/{x;N;p;}'

会报错在Ubuntu 中 即linux 中

dingmac@ubuntu:~$ echo -e "zhangsan\nlisi\n\n howa\naasdasdas" | sed -n '/how/{x;N;p}'aasdasdas

-h/-H

将 pattern buffer 转移到 hold buffer

-g/-G

将 hold buffer 转移到 pattern buffer

x

进行交换

关于D 的作用 参考 https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0ahUKEwjl4q6ZhdzYAhVydt8KHdUeBxYQFghFMAM&url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F39261834%2Fwhat-does-d-command-mean-in-gnu-sed&usg=AOvVaw2WPl7tkHtquVPngU86J4Z5

seq 105 | sed ':A;N;1,5bA;D' 

解释一下上面代码的含义

1进入pattern buffer 遇到N 第二行进来 1,5 在条件内 继续循环
到第5行的时候继续 循环 6进来 现在pattern buffer 里面有 1\n2\n3\n4\n5\n6 遇到命令D 现在 pattern buffer 变成了
2\n3\n4\n5\n6

有的人会在 ':A;N;1,5bA;D' 后面再加个p
变成 ':A;N;1,5bA;D;p' 然后给一个n 参数
将 不会输出任何内容 D 命令执行完成 后面的命令就不会执行了
也就是说 命令没有执行到最后 那不会打印出pattern buffer 里面的内容

那么如此往复之后 遇到最后一行105 进入到pattern buffer 中 现在 pattern buffer 变成 99\n100\n101\n102\n103\n104\n105 执行到D 命令 将pattern buffer 里面的 99 删除掉 最后程序结束 打印出 pattern buffer 里面的内容

也许你会问 为什么在执行到最后的时候 程序结束 会打印出pattern buffer 里面的内容

我猜的 :)

你可以加上-n 选项

n, --quiet, --silentsuppress automatic printing of pattern space

如果加上-n 就是

dingmac@ubuntu:~$ seq 105 | sed -n ':A;N;1,5bA;D' 

将不会输出任何内容 所有可以推测 如果没有 -n 选项 sed 在退出程序的时候 会打印出pattern buffer 里面的内容

9. Sed manage Pattern相关推荐

  1. linux sed 打印行号,sed 匹配pattern并输出行号

    This is a single line sed command to illustrate the example of , " How to print particular line ...

  2. linux sed给空文件首行插入_Linux系统中sed命令在文件某行前后添加内容的用法

    linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容.今天在批量修改tomcat的日志时就用到了该功能. 一.在某行的前一行或后一行添加内容 具休操作如下: 复制代码 ...

  3. sed 替换_Linux中sed的用法

    1.sed 流编辑器,实现对文字的增删改替换查(过滤.取行),能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件改动,但是不会 ...

  4. linux sed命令新文件名,linux中sed命令批量修改

    sed命令下批量替换文件内容 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 ...

  5. linux之sed命令n,N,d,D,p,P,h,H,g,G,x解析

    前言 sed执行模板 = sed '模式{命令1;命令2}' 文件,即逐行读入模式空间,执行命令,最后输出打印出来. sed的语法格式: sed [option] 'pattern{sed-comma ...

  6. linux教程 sed命令的用法,Linux文本处理三剑客——sed命令使用教程

    SED是一种流编辑器工具,可以根据设置的匹配条件对文件内容进行处理,支持正则表达式.sed每次处理一行数据,和awk处理流程是一样的. sed命令格式: sed [options] '/pattern ...

  7. linux sed在容器中怎么用,概述LFCS 基础之sed用法

    导读 Linux 基金会认证系统管理员(LFCS)的另一个有用的命令是 "sed",最初表示"流式编辑器" Streaming EDitor. "se ...

  8. sed是linux命令吗,Linux命令 sed

    一. 以行为单位进行操作. d:删除 $ nl passwd | sed '2,5d'  # 删除第2~5行 $ nl passwd | sed '2d'  # 删除第2行 $ nl passwd | ...

  9. Linux shell利用sed如何批量更改文件名详解

    转载自:http://www.jb51.net/article/124047.htm 示例1:去除特定的字符 目标:将 2017-01-01.jpg.2018-01-01.jpg 改为 2017010 ...

  10. linux sed删除指定行_shell三剑客之sed!

    背景 sed(Stream Editor 流编辑器),作为三剑客的一份子,主要的功能有增删改查. 为什么称之为"流"编辑器呢? 大家知道:在Linux文件系统中,一切都可以作为文件 ...

最新文章

  1. POJ1573-Robot Motion
  2. 关于论文检索的几点知识
  3. linux开端口不重启,Linux 防火墙开放端口(有时不生效可能是没有保存、重启导致)...
  4. linux高亮查找关键字
  5. 不知道Mysql排序的特性,加班到12点,认了认了!
  6. Quick-Cocos2d-x初学者游戏教程2
  7. Tripwire安装
  8. 根据进程名称获取进程id
  9. 通达OA办公系统的短信服务器(CDMA)
  10. 51单片机语音跳绳计播报跳绳数目
  11. 短信验证码的发送、接收验证流程
  12. 线性代数Python计算:无关向量组的正交化
  13. TCR宝藏级隐藏项目National Writing Board
  14. 磁珠和电感在解决EMI和EMC的不同应用
  15. 能装linux的嵌入式,试试一张软盘可装下Linux(嵌入式Linux)
  16. 尝试一下LLJ大佬的理论AC大法
  17. 爬虫入门经典(四) | 如何爬取豆瓣电影Top250
  18. win7打开计算机有嘟嘟提示音,大神研习win7系统电脑开机经常发出嘟嘟哔哔的声音的解决技巧...
  19. 基于Python的指数基金量化投资 ——A股所有个股名称和证券代码获取
  20. Win10 蓝牙已配对但无法连接的问题

热门文章

  1. CentOS / RHEL 安装 Teamviewer
  2. 前端学习第一弹:制作简易菜谱
  3. 暑期数学建模赛事总结--小白快速入门数学建模
  4. 【论文阅读】Reliability-Aware Joint Optimization for Cooperative Vehicular Communication and Computing
  5. 【0】工具——————UDP抓包分析
  6. 开源监控软件IOMA服务端安装教程(服务端暂只支持centos 7操作系统)
  7. open cv 不同大小图片,小图片替换到大图片中具体位置
  8. 应用原子荧光光谱仪测试尿液中的汞元素
  9. java验证唯一性_MVC+EF 自定义唯一性验证
  10. 网络层次与主要设备对应关系