zoukankan      html  css  js  c++  java
  • Linux-命令-sed-awk-grep

    命令: sed [options] 流编辑器,对文件增删改查换, 三剑客老二

    注意 sed "s#正则##g"    : 第一个位置正则

    sed 后向引用, sed -n 's#()()#12#g'

    参数:

    -n: 取消默认输出

     -i: 原地修改 edit files in place

    -i.bak -i参数后加.bak后缀名可以备份被修改的文件

    -e: 多项编辑

    -r: --regexp-extended

                  use extended regular expressions in the script.

    功能:

    p: (print)打印

    e.g. sed -n '20,30'p ett.log  打印ett.log 中20-30行内容

    e.g. sed -n '$'p ett.log  打印ett.log 中最后一行内容,$是文件结尾

    s: 替换

    g: global

    组合: sed 's#{old}#{new}#g' file

    注意:输出的内容已经更改,但是文件本身内容没有更改

    y:替换,相当于tr

     

    q:quit 退出 例: sed '10q' /etc/passwd 处理到第10行退出

    sed 过滤方法:

    面试题: 把AFolder 下的所有 *b*.sh 的文件内容中 'xxxxx' 换成'yyyyy'.

    方法1: find AFolder -type f -name ' *b*.sh ' | xargs sed -i 's#xxxxx#yyyyy#g'

    方法2: sed -i 's#xxxxx#yyyyy#g' `find AFolder -type f -name '*b*.sh' `

     


    命令: awk [options]  过滤输出内容, 三剑客老大

    参数:

    e.g. 

     [root@ark log]# awk 'NR>19&&NR<31' ett.log

    解释:NR 是行号

    -F 指定分隔符

     

    awk match 方法


    命令: grep  [options] 三剑客老三

    参数:

    -A:除了显示匹配的一行之外,并显示该行之后的num行(after)

    -B:除了显示匹配的一行之外,并显示该行之前的num行(before)

    -C:除了显示匹配的一行之外,并显示之前和之后的num行

    -x, --line-regexp 精确匹配
    Select only those matches that exactly match the whole
    line

    e.g. grep -x 11 -A 10 ett.log 

    解释: ett.log中有1000行, 如果没有-x参数 ,则匹配 11,111,211,311,411 等等 之后的10行.

    而有-x参数,只精确匹配"11"(-x 之后的字符串) 所以结果只有从11开始后跟10行数据

    -v: 排除 -invert-match

    排除不需要的内容

    -i : 不区分大小写

    -------------------- 阑心而慧智,心静而致远. --------------------
  • 相关阅读:
    ios开发学习视图切换(View Transition)效果源码分享系列教程
    ios开发学习cocos2d(cocos2d)效果源码分享系列教程
    C++类模板定义放在cpp里报错:LNK2019无法解析的外部符号
    std::string学习
    C++之ODB框架
    C++虚析构函数
    Windows编译GRPC
    Qt信号与槽原理
    GRPC环境配置
    C++传入指针并在内部new失败
  • 原文地址:https://www.cnblogs.com/mirrorlake/p/7339873.html
Copyright © 2011-2022 走看看