• sed,awk,grep


    sed流式编辑器

    逐行处理,可以非交互式对文本、脚本进行修改查看等操作

    [dmtsai@study ~]$ sed 选项 [动作] 
    选项:
    -n :在一般sed 的用法中,所有来自STDIN 的资料一般都会被列出到屏幕上。
         但如果加上-n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
    -e :直接在指令列模式上进行sed 的动作编辑;
    -f :直接将sed 的动作写在一个档案内, -f filename 则可以执行filename 内的sed 动作;
    -r :sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
    -i :直接修改读取的档案内容,而不是由屏幕输出。
          
    动作说明:
    a 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c 替换, c 的后面可以接字串,这些字串可以取代n1,n2 之间的行!
    d 删除,因为是删除啊,所以d 后面通常不接任何东西;
    i 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p 打印,通常p 会与参数sed -n 一起运作~
    r 读某文件的内容到目标文件
    

    例子:

    sed 'r a.txt' abc.txt    //将a.txt中的内容读到abc.txt的每行后
    w 写入目标文件的内容到其他文档
    sed 'w a.txt'  abc.txt  //将abc.txt中的内容覆盖保存到a.txt中,如果a.txt不存在则创建
    sed 's/要被取代的字串/新的字串/g'   //sed部分资料的搜寻并取代的功能
    
    1.将test.txt内每一行结尾.则换成! 
    [ymtk2 ~]$ sed -i 's/.$/!/g' test.txt
    
    2.直接在test.txt最后一行加入『# This is a test』 
    [ymtk2 ~]$ sed -i '$a # This is a test' test.txt
    #由于$代表的是最后一行,而a的动作是新增,因此该档案最后新增
    
    3.将/etc/passwd的内容列出并且列印行号,同时删除2-5行
    [deploy@i-ka6ymtk2 ~]$ nl /etc/passwd | sed '2,3d'
     1	root:x:0:0:root:/root:/bin/bash
         4	adm:x:3:4:adm:/var/adm:/sbin/nologin
         5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6	sync:x:5:0:sync:/sbin:/bin/sync
    ………………
    
    4.在/etc/passwd的内容第二行后加上『drink tea?』字样
    [deploy@i-ka6ymtk2 ~]$ nl /etc/passwd | sed '2a drink tea'  //以行为单位的新增/删除功能nl
         1	root:x:0:0:root:/root:/bin/bash
         2	bin:x:1:1:bin:/bin:/sbin/nologin
    drink tea
         3	daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4	adm:x:3:4:adm:/var/adm:/sbin/nologin
    ………………
    

    sed 查看,修改文本
    grep 模糊搜索,能力一般
    awk 查看文本内容,可以实现复杂的搜索

    awk

    AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

    方法一:
    前置命令 | awk 选项  指令
    
    方法二:
    awk 选项  指令  文件
    awk '{print}'  test.txt   //使用awk显示文本中所有内容
    awk '{print $1}' test.txt  //使用awk显示文本中每行的第1列,默认情况下,每列的分隔符是空格或者tab
    head -1 /etc/passwd  >  test2.txt
    awk -F: '{print $2}' test2.txt  //使用:作为分隔符,显示第2列内容
    df -h | awk '{print $4}'   //使用前置命令查看磁盘剩余用量
    awk -F[:/] '{print $7}'  test2.txt   //使用:或者/作为分隔符显示文本中第7列,两个分隔符连在一起时,中间的“空”也算一列
    
    awk内置变量   $0显示全部列   $1显示第1列  $2 ....     
    NR-->行号   NF-->列数
    awk '{print $0,$2}' test.txt  //显示每行的所有内容,以及第2列
    awk '{print NR,NF}' test.txt  //显示每行的行号,以及这行一共有多少列
    

    grep

    man grep #查看手册
    基础正则表达式字符整理

    ^word	意义:待搜寻的字串(word)在行首
    
    word$	意义:待搜寻的字串(word)在行尾
    
    .	意义:代表『一定有一个任意字元』的字符
    
    	意义:将特殊符号的特殊意义去除
    
    *	意义:重复零个到无穷多个的前一个字符
    
    [list]	意义:集合,里面列出想要截取的字符范围
    
    [n1-n2]	意义:集合,里面列出想要截取的字符范围
    
    [^list]	意义:集合,里面列出不要的字串或范围
    
    {n,m}	意义:连续n到m个的『字符』
    意义:若为{n}则是连续n个的前一个字符,若是{n,}则是连续n个以上的前一个字符!
    
  • 相关阅读:
    js将单个反斜杠转化为斜杠的问题
    HTML提供的6种空格
    JavaScript 内存管理
    JavaScript:4个常见的内存泄露
    正则多种匹配描述
    css3图片展示方式
    动态规划篇一:初见动态规划
    小球下落(Dropping Balls, Uva 679)
    破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988)
    铁轨(rails, ACM/ICPC CERC 1997,Uva 514)
  • 原文地址:https://www.cnblogs.com/xujint/p/13273853.html
Copyright © 2020-2023  润新知