青岛网站优化公司哪家好,查询公司的app,杭州建设网 郎鑫,导航网站制作1. sed 如何工作的
sed 维护两个空间#xff1a;
模式空间保留空间
sed是以行为周期来处理文本的。
sed从输入流中读取一行#xff0c;去掉最后的换行符#xff0c;把它放入模式空间。随后执行命令#xff0c;每个命令都有关联的地址和条件#xff0c;只有匹配时才执行…1. sed 如何工作的
sed 维护两个空间
模式空间保留空间
sed是以行为周期来处理文本的。
sed从输入流中读取一行去掉最后的换行符把它放入模式空间。随后执行命令每个命令都有关联的地址和条件只有匹配时才执行命令。当脚本命令执行完后模式空间的内容被打印到输出流中(-n选项不出现)在最后加上换行符。回到1
一般情况下模式空间的内容在进行下一次循环时会删除而保留空间则不会。
2. 多行处理技巧
多行处理命令
D 从模式空间删除一行重新开始循环G 从保留空间拿一行加到模式空间最后H 从模式空间拿一行加到保留空间最后N 从输入文件中拿一行加到模式空间P 输出模式空间的第一行内容
命令看不懂还是直接看脚本吧
打印相邻两行 $ seq 6 | sed -n N;l;D
1\n2$
2\n3$
3\n4$
4\n5$
5\n6$多读取一行再打印最后删除第一行。
处理段落
sed /./{H;$!d} ; x ; s/REGEXP/REPLACEMENT/前面的表示非空行的时候把模式空间的东西放到保留空间。
x表示把保留空间内容复制到模式空间
空行的时候再执行查找替换命令。
n与N区别
printf %s\n aa bb cc dd | sed :x ; n ; ; bx
printf %s\n aa bb cc dd | sed :x ; N ; ; bx
printf %s\n aa bb cc dd | sed :x ; n ; s/\n/***/ ; bx
printf %s\n aa bb cc dd | sed :x ; N ; s/\n/***/ ; bxn命令先打印模式空间内容再清空它再读取下一行内容。 N命令先将读入的下一行放入模式空间累计读取的内容最后打印。
3. 分支与循环
上面的其实已经用到了循环
b无条件跳转t条件成立时跳转T条件不成立时跳转:标号
还是看脚本吧
合并行
sed :x ; /$/ { N ; s/\n//g ; bx } jaques.txt另一种写法
sed :x ; $!N ; s/\n// ; tx ; P ; D jaques.txtsed去换行符
sed :a;N;$!ba;s/\n//g file$!最后一行的意思
4. ref
gnu_sed