• Linux三剑客grep/sed/awk


    grep/sed/awk被称为linux的“三剑客”

    grep更适合单纯的查找或匹配文本;

    sed更适合编辑匹配到的文本;

    awk更适合格式化文本,对文本进行较复杂各式处理;

    • Grep

    --color=auto 或者 --color:表示对匹配到的文本着色显示

    -i:在搜索的时候忽略大小写

    -n:显示结果所在行号

    -c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数

    -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

    -v:输出不带关键字的行(反向查询,反向匹配)

    -w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配

    -Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after

    -Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before

    -Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context

    -e:实现多个选项的匹配,逻辑or关系

    -q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用"echo $?"查看是否匹配到,0表示匹配到,1表示没有匹配到。

    -P:表示使用兼容perl的正则引擎。

    -E:使用扩展正则表达式,而不是基本正则表达式,在使用"-E"选项时,相当于使用egrep。

     -m 1 匹配到首行记录后停止

     

    http://www.zsythink.net/archives/1733/

     

     

    • Sed

    sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器。

     

    Sed小技巧:

    1,

     

    search_result=`grep -E --color -n '####VVVV' $podfile`
    echo "$search_result"   

    ### "$search_result" 加双引号保存grep结果中的换行符效果

    2,

    array=(`echo "$search_result" |  awk -F "[:]" '{print$1}' | sort -r`)

     

    ### 加括号,将换行结果作为数组输出 

    http://cn.voidcc.com/question/p-oqtqbgdm-bgy.html

     

     

    https://blog.csdn.net/longshenlmj/article/details/14166193

     

    https://blog.csdn.net/lingeio/article/details/96480071

    坑1:

    eg :sed -i ""  's/$oldday/$today/g'  ${json_path}

    shell中如果有$这样的特殊字符,单引号要换成双引号。

    坑2:

    mac环境使用sed修改文件报错:invalid command code E

    eg: sed -i  "s/$oldday/$today/g"  ${json_path}

    原来sed -i需要带一个字符串作为备份源文件的文件名称,如果这个字符串长度为0,则不备份。 

    https://blog.csdn.net/fdipzone/article/details/51253955

    坑3:

    MAC执行sed命令报“command c expects followed by text”错误解决办法

    https://blog.csdn.net/lord_y/article/details/99949999 

    • awk

      awk  [options] '{pattern + action}' {filenames}

    Vivien 补充

    麻烦1:他们都是面向“行”的。跨行需要采用其他手段。

     

  • 相关阅读:
    android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
    Web前端框架与类库的思考
    android应用开发(十):widget的使用
    响应式WEB设计的9项基本原则
    谈一下关于CQRS架构如何实现高性能
    迪杰斯特拉算法——PAT 1003
    Android开发-SQLite数据库
    寻找水王(2)
    PAT-1003
    PAT-1002
  • 原文地址:https://www.cnblogs.com/developer-qin/p/11334849.html
Copyright © 2020-2023  润新知