sed 编辑器的选项用法浅谈

sed 在linux下作文本转换,过滤之用,使用范围比较广泛。

最近重温一些参数用法,理解起来有些费劲。

: label
       Label for b and t commands.

  lable 可以配合  b , t ,T 命令使用

下面详细讲解配合的用法:

  1,建一个测试的文本

      echo -e "1111111\n222222\n333333\n444444\n555555\n666666" > sed.txt

    默认sed 每次加载一行到模式空间(pattern space)

    n N    Read/append the next line of input into the pattern space.

   N 命令会同时加载下一行到模式空间

    执行 sed ‘N;s/\n//‘ sed.txt  每两行会连接为一行输出

  2,label  配合 b 命令使用

    执行:sed ‘:token;N;s/\n//;b token‘ sed.txt

    输出如下:

      1111111222222333333444444555555666666

     sed命令第一次执行 1和2 之间的换行符被替换,b 命令重新回到 label:token 再次执行命令 ,3 这行被加载进模式空间,执行替换命令,sed 循环执行命令,直到所有的文本行加载执行完毕。

     这种执行方式,没有条件限制,每次b命令都会执行 label 这一步。t,T 则是有条件执行

   3,label  配合 t,T命令使用

    摘出来一段文档里面的解释:

    t label
              If a s/// has done a successful substitution since the last input line was read and since the last t or T command, then branch to label; if label is omitted, branch to end of script.

  T label
              If  no s/// has done a successful substitution since the last input line was read and since the last t or T command, then branch to label; if label is omitted, branch to end of script.  This is a
              GNU extension.

    t命令 在 s/// 有替换操作 则 执行label,命令进入循环状态,模式空间数据保留,再次执行label后的命令

    执行:sed ‘:token;N;s/\n//;t token‘ sed.txt

    输出如下:

      1111111222222333333444444555555666666

    T命令 在 s/// 没有替换操作 则 执行label,命令进入循环状态,模式空间数据保留,再次执行label后的命令

    执行: sed ‘:token;N;s/\n//;T token‘ sed.txt

    输出如下:

      1111111222222
      333333444444
      555555666666

    

  -------------------------------------END-----------------------------------------

  

      

      

    

  

时间: 2024-07-30 13:44:58

sed 编辑器的选项用法浅谈的相关文章

css中伪类元素:before及:after用法浅谈

JS代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> *{ margin: 0; padding: 0; } .wrap{ margin-top: 10px; width: 150px; padding: 10px; position: relative; } .wrap span:nth

PHP中的$_SERVER["HTTP_REFERER"]用法浅谈

大家知道$_SESSION['HTTP_REFERER']可以获取当前链接的上一个连接的来源地址,即链接到当前页面的前一页面的 URL 地址,可以做到防盗链作用,只有点击超链接(即<A href=...>) 打开的页面才有HTTP_REFERER环境变量, 其它如 window.open(). window.location=....window.showModelessDialog()等打开的窗口都没有HTTP_REFERER 环境变量. 写个函数吧 简单的可以.起到防盗链作用 <?

Linux的文本处理工具浅谈-awk sed grep

Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 [语法格式] awk [–F] [“[分隔符]”] [’{print$1,$NF}’] [目标文件] awk 'BEGIN{FS="[列分隔符]+";RS="[行分隔符]+";print "-GEGIN-"

浅谈struts2标签中的2个很常用的标签的用法(radio和select)

1.如图所示我们需要在前台的页面通过radio和select将对应的数据库中的数据显示到选项当中,这也是我们做项目中经常需要做的,动态的显示,而不是静态的显示. 首先我们需要在页面中导入struts2的标签库<%@ taglib prefix="s" uri="/struts-tags"%>,一般的我们不用struts2写一个radio代码如下: <input type="RADIO" name="sex"

浅谈intval()函数用法

1 <?php 2 $sql=mysql_query("select count(*) as total from tb_leaveword ",$conn); 3 $infos=mysql_fetch_array($sql); 4 $total=$infos['total']; //获取总留言条数 5 if($total==0){ //如果总留言条数为0,则给出提示 6 echo "<div align=center>对不起,暂无留言!</div&g

浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

首先,大家在使用SSM框架进行web开发的时候,经常会在Ctrl层遇到@RequestMapping.@ResponseBody以及@RequestBody这三个参数,博主就以自己在项目开发中总结的一些知识点浅谈一下三者之间微妙的关系. [email protected] 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径:用于方法上,表示在类的父路径

图标字体化浅谈[转]

在做手机端Web App项目中,经常会遇到小图标在手机上显示比较模糊的问题,经过实践发现了一种比较好的解决方案,图标字体化.在微社区项目中,有很多小的Icon(图标),如分享.回复.赞.返回.话题.访问.箭头等,这些Icon(图标)一般都是纯色的.开始制作时考虑用双倍大小的Sprite图,通过CSS样式设置只显示二分之一尺寸,这样在Retina屏上显示的大小是正常的,一旦放大屏幕后图标又变得模糊不清,测试的效果不是很理想,后来又考虑多套图标适配方案.SVG矢量图等,都因为种种原因放弃掉了(如多套

浅谈HTTP响应拆分攻击

在本文中,我们将探讨何谓HTTP响应拆分以及攻击行为是怎样进行的.一旦彻底理解了其发生原理(该原理往往被人所误解),我们就可以探究如何利用响应拆分执行跨站点脚本(简称XSS).接下来自然就是讨论如果目标网站存在响应拆分漏洞,我们要如何利用这一机会组织CSRF(即跨站点伪造请求)攻击.最后,我们一起来看看哪些预防措施能够抵御这些攻击行为.如果大家对这个话题感兴趣,不妨继续读下去. 什么是HTTP响应拆分? 首先让我们设想一下某个具备多种语言选项的页面.该页面的默认语言为英语,但其中同时具备一个下拉

浅谈Linux中的信号机制(二)

首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Linux内核源码评头论足.以后的路还很长,我还是一步一个脚印的慢慢走着吧,Linux内核这座山,我才刚刚抵达山脚下. 好了,言归正传,我接着昨天写下去.如有错误还请各位看官指正,先此谢过. 上篇末尾,我们看到了这样的现象:send进程总共发送了500次SIGINT信号给rcv进程,但是实际过程中rcv只接受/处理了1