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. ...
随机推荐
- 学习笔记60—SPSS
一.直方图上显示曲线图:打开SPSS ----> 导入数据 ----> 描述统计 ----> 分析 ----> 频率 ----> 图表 ----> 直方图(勾上在直 ...
- Oracle 12c RAC
前提环境(ip,内核参数,环境变量,存储等等...)已准备好. (一) 安装grid 1. Grid用户登录上传并解压 上传linuxx64_12201_grid_home.zip至/u01/ ...
- HBase过滤器的使用
一.常用过滤器: 1.数据准备: Rowkey:001 Family:Quilfifier address value: 昆明市西山区 Rowkey:001 Family:Quilfifier age ...
- ubuntu1404安装搜狗输入法
1.安装fcitx,一种输入法框架 apt-get install fcitx 2.配置使用fcitx 配置中心-语言支持-键盘输入方式系统,选择fcitx 3.登出再登入 4.下载sougou安装d ...
- JavaScript常见案例
一.点灯开关控制: <!DOCTYPE html><html lang="en"><head> <meta charset="U ...
- 最全面的移动APP测试点
随着互联网,大数据时代的不断推进,演化.移动开发领域得到普遍普及,APP开发如潮水般涌现.下面我将详细介绍app的测试点: 首先我们先熟悉app测试基本流程: 1.1流程图 1.2测试周期 测试周期可 ...
- Confluence 6 示例 - https://confluence.atlassian.com/
这里是有关存储空间和内存使用的情况,数据更新于 2013年04月: 数据库大小 2827 MB Home 目录占用空间大小 116 GB 平均内存消耗 1.9 GB 选择实例的数据库表格 数据(Dat ...
- Ubuntu环境下,项目出现:Call to undefined function curl_init() 提示
原因: 没有开启curl扩展 安装或者开启扩展 ubuntu 执行安装Curl的扩展 sudo apt-get install -y php-curl 同: mysql,redis,curl,等. 摘 ...
- 『Python』socket网络编程
Python3网络编程 '''无论是str2bytes或者是bytes2str其编码方式都是utf-8 str( ,encoding='utf-8') bytes( ,encoding='utf-8' ...
- Lua 语言变量
Lua 变量 变量在使用前,必须在代码中进行声明,即创建该变量.编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值. Lua 变量有三种类型:全局变量.局部变量.表中的域. ...