最近遇到一个文本复制的场景,需要把文本的每一行都重复输出三次. 这个用awk或者sed实现都还是很简单的. sed代码: [root]$ seq | sed '{h;G;G}' 现在的问题是,如果每行要重复输出100次,该怎么修改上面的命令.sed里面能执行指定次数的循环吗? 暂时还没找到解决方法.…
1. sed执行模板=sed '模式{命令1;命令2}' 即逐行读入模式空间,执行命令,最后输出打印出来 2. 为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\n的内容,并追加到默认输出之前. sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将两行看做一行. 2-1.n命令 n命令简单来说就是提前读取下一行,覆盖模型空间前一行(并没有删除,因此依然打印至标准输出),如果命令未执行成功(并非跳过:前端条件不匹配),…
在前面看到的都是单行模式.每次sed处理一个行. 但是sed是允许一次处理多行的.这就是所谓的多行模式空间. 多行模式空间命令有(N.D.P),他们分别对应单行模式空间(n.d.p). 分别是他们的多行形式.只不过,d每次删除一行,而D每次删除多行模式空间中的“一行”,其实就是一个记录. 下面举例子.我们假设有一个文件,loves cc两个单词分散在不同的行.我们想通过sed将二者放在同一行. zoer@ubuntu:~$ cat data naughty loves cc,and cc lov…
4.1            Sed工作原理 sed是一个非交互式的流编辑器.所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出:而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然后对该行进行指定的处理,并将结果输出到屏幕(除非取消了屏幕输出又没有显式地使用打印命令),接着读入下一行.整个文件像流水一样被逐行处理然后逐行输出. 下面我们看一下sed的工作过程. sed不是在原输入上直接进行处理的,而是先将读入的行放到缓冲区中,对缓冲区里的内容进行处理…
摘自:https://blog.csdn.net/wanglelelihuanhuan/article/details/51591809 sed的模式空间和保持空间 2016年06月06日 17:15:07 wanglelelihuanhuan 阅读数:3022 标签: shell脚本sed 更多 所属专栏: 王乐乐 sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的“模式空间(pattern space)”,另一个是起辅助作用的“保持空间(hold space)…
SED之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的“模式空间(pattern space)”,另一个是起辅助作用的“暂存缓冲区(holdingspace)这2个空间的使用. sed编辑器逐行处理文件,并将输出结果打印到屏幕上.sed命令将当前处理的行读入模式空间(pattern space)进行处理,sed在该行上执行完所有命令后就将处理好的行打印到屏幕上(除非之前的命令删除了该行),sed处理完一行就将其从模式空间中删除,然后将下一行读入模式空间,进行处理.显示…
摘自:https://blog.csdn.net/ITsenlin/article/details/21129405 sed高级用法:模式空间(pattern space)和保持空间(hold space) 2014年03月13日 00:54:09 itsenlin 阅读数:12212更多 个人分类: linux 环境:centos 6.4 sed版本:sed-4.2.1-10.el6.x86_64 前面的基本用法已经可以满足90%的需要,人个认为想要真正掌握sed,还需要学习一下sed的高级用…
sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的"模式空间(pattern space)",另一个是起辅助作用的"保持空间(hold space)这2个空间的使用. 正常情况下,如果不显示使用某些高级命令,保持空间不会使用到! sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式空间被清空:接着,在重复执行刚才的动作,文件…
下面是我们要处理的文本:题目要求是把所有散列在不同行的同一个中括号中的数据集中在一起, 见下表就秒懂了吧 处理前的文本 处理后的文本 [123456][ASDEF][ABCD123WF][789ADC][1234456ABWQ456WIU] [123456][ASDEF][ABCD123WF][789ADC][1234456ABWQ456WIU] 先说指令:  sed '/^\[/{:a;N;/^\[/!{s/\n\[//g;ta}};P;D;' enter.txt 这条指令真是把本人折腾得够呛…
模式空间:容纳当前输入行的缓冲区: 保持空间:作为辅助的一个缓冲区,可以和模式空间进行交互,但是命令不能直接作用于保持空间. 由上面定义可以知道,模式空间和保持空间是两个独立的缓冲区,可以进行交互,命令可以寻址模式空间但是不能寻址保持空间. 一.模式空间: 通过模式匹配到的行被读入模式空间中.用来进行进一步的操作:在多行模式中,'\n'可以用来和模式空间(N命令的结果)的任意换行符匹配,单模式空间底部的换行符除外.^匹配多行的首,$匹配多行的尾,不是每行的行首和行尾. 二.保持空间: 可以通过h…