sedsed 一个更好理解sed执行过程的工具
官网:http://aurelio.net/projects/sedsed/ 这个上面好多学习的资料 嘿嘿 留着慢慢看
昨晚在看sed的具体执行过程,看到有hold space,pattern sapce,然后想看一下执行过程,就搜啊搜啊,搜到这个,以前就一直想有没有一个指令能追踪如何执行的
大概根据官网和自己的理解记录一下,不过我觉得看官网的原文更好理解,如果文中有错误,希望能一起改正,嘿嘿
二:sedsed的几种模式
cat email.txt
user@abc.com
otheruser@ll.com
cat email.txt |sedsed -d --hide=hold 's/@.*//g'
PATT:user@abc.com$
COMM:s/@.*//g
PATT:user$
user
PATT:otheruser@ll.com$
COMM:s/@.*//g
PATT:otheruser$
otheruser
--hide=patt 就是把PATT:这个给隐藏起来,只会输出HOLD与COMM
cat email.txt |sedsed -d --hide=patt 's/@.*//g'
HOLD:$
COMM:s/@.*//g
HOLD:$
user
HOLD:$
COMM:s/@.*//g
HOLD:$
otheruser
--hide=comm 就把COMM:隐藏,就只会输出HOLD,PATT
cat email.txt |sedsed -d --hide=comm 's/@.*//g'
PATT:user@abc.com$
HOLD:$
PATT:user$
HOLD:$
user
PATT:otheruser@ll.com$
HOLD:$
PATT:otheruser$
HOLD:$
otheruser
不加隐藏属性的话,PATT,HOLD,COMM都会对应的输出
cat email.txt |sedsed -d 's/@.*//g'
PATT:user@abc.com$
HOLD:$
COMM:s/@.*//g
PATT:user$
HOLD:$
user
PATT:otheruser@ll.com$
HOLD:$
COMM:s/@.*//g
PATT:otheruser$
HOLD:$
otheruser
cat email-linker.sed
h;s|.*|<link>&</link>|;x;/@/{s/@.*/'s email:/;G;}
sedsed --indent -f email-linker.sed
h
s|.*|<link>&</link>|
x
/@/ {
s/@.*/'s email:/
G
}
echo lile@yunovo.cn |sedsed -d -f email-linker.sed
PATT:lile@yunovo.cn$
HOLD:$
COMM:h
PATT:lile@yunovo.cn$
HOLD:lile@yunovo.cn$
COMM:s|.*|<link>&</link>|
PATT:<link>lile@yunovo.cn</link>$
HOLD:lile@yunovo.cn$
COMM:x
PATT:lile@yunovo.cn$
HOLD:<link>lile@yunovo.cn</link>$
COMM:/@/ {
COMM:s/@.*/'s email:/
PATT:lile's email:$
HOLD:<link>lile@yunovo.cn</link>$
COMM:G
PATT:lile's email:\n<link>lile@yunovo.cn</link>$
HOLD:<link>lile@yunovo.cn</link>$
COMM:}
PATT:lile's email:\n<link>lile@yunovo.cn</link>$
HOLD:<link>lile@yunovo.cn</link>$
lile's email:
<link>lile@yunovo.cn</link>
sedsed --htmlize -f email-linker.sed >email-linker.sed.html
然后在浏览器里,在对应的路径打开就可以看到彩色的输出,打开这个文件email-linker.sed.html,全是html的标签

sedsed -t 's/b/a/g'
linenr:
addr1:
addr1flag:
addr2:
addr2flag:
lastaddr:
modifier:
id:s
content:
delimiter:/
pattern:b
replace:a
flag:g
extrainfo:
comment:
sedsed 一个更好理解sed执行过程的工具的更多相关文章
- 理解Javascript执行过程
Javascript是一种解释型的动态语言. 在程序中,有编译型语言和解释型语言.那么什么是编译型语言,什么是解释型语言呢? 编译型语言: 它首先将源代码编译成机器语言,再由机器运行机器码(二进制). ...
- MyBatis 源码分析 - SQL 的执行过程
* 本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析 ...
- PHP - pcntl_fork() 执行过程详解
<?php $pid = pcntl_fork();if ($pid == -1){ die("could not fork");}elseif($pid == 0 ...
- Mybatis拦截器执行过程解析
上一篇文章 Mybatis拦截器之数据加密解密 介绍了 Mybatis 拦截器的简单使用,这篇文章将透彻的分析 Mybatis 是怎样发现拦截器以及调用拦截器的 intercept 方法的 小伙伴先按 ...
- Raft 为什么是更易理解的分布式一致性算法
一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜 ...
- 【转】Raft 为什么是更易理解的分布式一致性算法
编者按:这是看过的Raft算法博客中比较通俗的一篇了,讲解问题的角度比较新奇,图文并茂,值得一看.原文链接:Raft 为什么是更易理解的分布式一致性算法 一致性问题可以算是分布式领域的一个圣殿级问题了 ...
- Raft 为什么是更易理解的分布式一致性算法(转)
一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜 ...
- 【转载】Raft 为什么是更易理解的分布式一致性算法
一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜 ...
- c语言编译预处理和条件编译执行过程的理解
在C语言的程序中可包括各种以符号#开头的编译指令,这些指令称为预处理命令.预处理命令属于C语言编译器,而不是C语言的组成部分.通过预处理命令可扩展C语言程序设计的环境. 一.预处理的工作方式 1.1. ...
随机推荐
- 拦截器实现HandlerInterceptor没有提示实现里面的方法
在自定义拦截器的时候需要实现HandlerInterceptor,但是没有报错,如图: 如果想实现里面的方法,快捷键是command+o
- ceph储存的S3接口实现(支持断点续传)
最近公司准备接ceph储存,研究了一番,准备用亚马逊的s3接口实现,实现类如下: /** * Title: S3Manager * Description: Ceph储存的s3接口实现,参考文档: * ...
- html css js 细节
细节1 1.Chrome中文界面下会将小于12px的字体默认显示为12px,解决方法:在CSS中加入-webkit-text-size-adjust:none; 2.link可以加载除CSS以外的其他 ...
- iconfont作用在css伪类中的写法
iconfont作用在css伪类中需要注意两点: 1.字体声明(font-family: "iconfont";). 2.把字体写成十六进制的Unicode编码.比如:" ...
- springboot添加多数据源 以及 动态添加数据源动态切换数据源
<!-- Druid 数据连接池依赖 --> <dependency> <groupId>com.alibaba</groupId> <artif ...
- JxBrowser之一:Java嵌入Chrome浏览器
1.JxBrowser是一个让Java可以轻松集成Chrome浏览器的跨平台库:一般用于网络爬虫或者网页自动化测试等. 官方网址:https://jxbrowser.support.teamdev.c ...
- JAVA文件操作类和文件夹的操作代码示例
JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...
- 完美解决xhost +报错: unable to open display "" 装oracle的时候总是在弹出安装界面的时候出错
详细很多朋友在装oracle的时候总是在弹出安装界面的时候出错,界面就是蹦不出来. oracle安装 先切换到root用户,执行xhost + 然后再切换到oracle用户,执行export DISP ...
- Wincc数据库连接代码生成方法
对于数据库的连接,最简便的方法是: 在桌面新建文本文档(.TXT) 将文本后缀改为.udl文件 打开修改后缀后的文件界面如下所示(选择驱动程序): 选择连接的数据库,如下所示: 选择数据库中的一个数据 ...
- vim 插件 -- ctags
vim ctags 插件实现代码跳转的功能.希望在一个项目中快速的找到函数,变量,宏等定义的地方. 下载 http://ctags.sourceforge.net/ 安装 tar -jxvf ctag ...