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. ...
随机推荐
- DAY8 文件操作(二)
一.写 1.1写文件 # w:没有文件新建文件,有文件就清空文件 w = open('1.txt', 'w', encoding='utf-8') w.write('000\n') # 在写入大量数据 ...
- 【分布式搜索引擎】Elasticsearch如何部署以及优化查询性能
一.Elasticsearch生产集群如何部署 (1)es生产集群部署5台机器,若每台机器是6核64G的,那么集群总内存是320G (2)假如我们es集群的日增量数据大概是2000万条,每天日增量数据 ...
- CentOS7下mariadb日常管理
在CentOS7下,官方提供的mysql的rpm包就是mariadb,可查看mariadb包信息 [root@host ~]$rpm -qi mariadb # 需要先安装该包 Name : mari ...
- Kali linux 2016.2(Rolling)里安装OpenVAS
不多说,直接上干货! 本博文,是在Kali 2.0 linux里,安装OpenVAS. 前言 OpenVAS是一款开放式的漏洞评估工具,主要用来检测目标网络或主机的安全性.与安全焦点的X-Scan工具 ...
- [lightoj P1151] Snakes and Ladders
1151 - Snakes and Ladders Time Limit: 2 second(s) Memory Limit: 32 MB 'Snakes and Ladders' or 'Sh ...
- 线程池threadPools
1.线程池是用来存储线程的容器 2.Executors.newFixedThreadPool(int n);创建线程池,并且设置线程池的容量为n 3.submit开启线程 4.会返回一个对象futur ...
- 最全的测试用例(UI)
一.文本框为字符型 必填项非空校验: 1.必填项未输入--程序应提示错误: 2.必填项只输入若干个空格,未输入其它字符--程序应提示错误: 字段唯一性校验:(不是所有字段都作此项校 ...
- 羽翼metasploit第一,二季学习笔记
-----------------第一季-------------------- 启动Metasploit:msfconsole 升级和更新:./msfupdate 直接退出:exit 退回上一级:q ...
- vue-新建项目-构建-打包-环境切换
一.新建项目 二.运行 npm install npm run start 三.多环境切换 踩坑后总结的方法.. 首先看到package.json 前面的参数都是命令.比如“start”的意思就是np ...
- cocos2d-x学习笔记(斗地主代码)
满足百度百科上的出牌规则,电脑可以随着玩家出牌. 百度网盘地址:链接: https://pan.baidu.com/s/1eRLpvJ8 提取密码: tf8w