• linux 三剑客命令(grep,sed ,awk)


    grep 命令 :强大的文本’搜索’工具

       1.grep   -n   'word'  file_name
    

    在file_name文件中找到word所在的所有行并显示。-n 为显示行号。

    这里写图片描述

        2.grep   'w[ea]ll'   file_name
    

    在file_name文件中找到wall 或者是well 所在的所有行并显示

    这里写图片描述

        3.grep    'w[^e]ll'   file_name
    

    在file_name文件中找到”非well” 所在的所有行并显示

    这里写图片描述

        4.grep   '^The'   file_name 
    

    在file_name文件中找到以The开头的所有行并显示(请与上一条命令进行区别)

    这里写图片描述

        5. grep       'goo..le'      file_name
    

    在file_name文件中找到goo(任意字符)(任意字符)le的所有行并显示(即总共七个字符)

    这里写图片描述

       6.grep    'g*g'     file_name
    

    在file_name文件中找到g , gg , ggg等的所有行并显示(*代表重复前一个字符0~~无穷多次)

    这里写图片描述

      7.grep   'Ty{2,3}'    file_name 
    

    在file_name文件中找到Tyy,Tyyy的所有行并显示(注意{}在 shell中有特殊含义,故需要转义)

    这里写图片描述

    注意 : grep可以使用grep –color=always 来使得所查找的字符拥有特殊颜色,然后在执行source ~/.bashrc 来使得设置立即生效。

    sed :实现数据的替换,删除,增加,选取等(以行为单位进行处理)

      1.sed    '2,4d'    file_name
    

    删除file_name文件的2到4行

     2.sed  '2a liu .....
     >shengxi is shuai !!!'  file_name 
    

    在第二行下新增这样两行

    这里写图片描述

    3.sed   '2,4c    ni han ma   a !!!'    file_name 
    

    把file_name文件的2到4行,替换为ni han ma a !!

    4.sed   '2,5p' -n  file_name
    

    把file_name文件的2到5行打印出来(不用-n 参数,就会重复输出2到5行)

    5.sed  -i  's/a[t]./p_temp->/g'     file_name 
    

    把file_name文件中的a[t]. 全部替换为p_temp-> (-i 会直接将修改写入文件,[ ] 和 . 是特殊符号,需要用来转义一下)

    awk : 以字段为单位进行处理(其实就是把一行的数据分割,然后进行处理)

    先介绍一些关于awk的用法:

     1.$0   代表一整行的数据
     2.$1   代表第一个字段,用人的话来说就是第一列的数据
     3.$2   以此类推
     4.NF   每一行拥有的字段总数
     5.NR   目前处理的是第几行的数据
     6.FS   目前的分隔字符
     7.命令格式 :awk   '条件{命令1} 条件{命令2}...'   file_name
    

    具体命令:

        1. awk      'NR<6{print   $1  "	"  $2 }'     file_name  
    

    把file_name 文件中的前五行的第一列,第二列的数据列出来 (以[tab]或空格键分隔)

    这是test 文件

    这里写图片描述

      2.awk   '{print "该行数据为" $0 "	" "该行的字段总数为"  NF   "	"  "目前这是第几行"  NR}'   file_name
    

    这里写图片描述

       3.  awk      'BEGIN{FS=":"}  $3<10{print $1 "	" $3}'     /etc/passwd 
    

    把/etc/passwd文件的第一列与第三列列出来(BEGIN可以让我们自己设置的分隔字符立即生效)

    /etc/passwd 文件中第一列是帐户,第三列是UID(就是用户ID)。该文件以 : 号分隔,一行代表一个用户,记录关于用户的各种信息。

    这里写图片描述

    特殊说明:

     1.print 默认带有换行符,printf 没有 
    

    这里写图片描述

      2.像
     ,	,这种符号应该用双引号括起来 
      3.NR,NF等变量要用大写,并且不需要 $ 
    

    三剑客命令总结:

    -记住三个命令的运用形式
         grep    '字符'       文件
         sed     '命令'       文件
         awk    '条件{命令}'   文件
    -死记一点,单引号内就是正则表达式的用法
    

    重复一遍:单引号内一定是正则表达式,一定,一定!!!

    最后附上一个查询命令的链接地址:查命令

    下一篇将贴一个我写的入门式脚本,仅供娱乐!

  • 相关阅读:
    P3350 [ZJOI2016]旅行者
    P4178 Tree
    P2375 [NOI2014]动物园
    P2827 蚯蚓
    1002: [FJOI2007]轮状病毒
    1070: [SCOI2007]修车
    AtCoder Grand Contest 021完整题解
    Running to the End(Codeforces & AtCoder 百套计划)
    SDWC2017游记
    非传统题初探——AtCoder Practice Contest #B
  • 原文地址:https://www.cnblogs.com/Tattoo-Welkin/p/10335229.html
Copyright © 2020-2023  润新知