Linux三剑客(grep+awk+sed)

一、grep

 grep pattern file 

grep -i pattern file 忽略⼤⼩写 

grep -v pattern file 不显⽰匹配的⾏ 

grep -o pattern file 把每个匹配的内容⽤独⽴的⾏显⽰ 

 grep -E pattern file 使⽤扩展正则表达式 

 grep -A -B -C pattern file 打印命中数据的上下⽂ 

 grep pattern -r dir/ 递归搜索

二、BRE基本正则表达式

^ 开头 $结尾 

[a-z]  [0-9] 区间,如果开头带有^表⽰不能匹配区间内的元素 

 * 0个或多个 

 . 表⽰任意字符

三、ERE扩展正则表达式

基本正则表达式(BRE)基础上的扩展 

? ⾮贪婪匹配 

+  ⼀个或者多个 

() 分组 

{} 范围约束 

| 匹配多个表达式的任何⼀个

四、awk

1、介绍 

    Awk是linux下的⼀个命令,同时也是⼀种语⾔解析引擎 

    Awk具备完整的编程特性。⽐如执⾏命令,⽹络请求等 

    精通awk,是⼀个linux⼯作者的必备技能 

2、awk pattern语法( awk 'pattern{action}')

    awk理论上可以代替grep 

    awk 'pattern{action}'

    awk 'BEGIN{}END{}'  开始和结束 

    awk '/Running/'  正则匹配 

    awk '/aa/,/bb/' 区间选择 

    awk '$2~/xxx/' 字段匹配 

    awk 'NR==2' 取第⼆⾏ 

    awk 'NR>1'  去掉第⼀⾏

3、awk内置变量

    FS 字段分隔符 

    OFS 输出数据的字段分隔符 

    RS 记录分隔符 

    ORS 输出字段的⾏分隔符 

    NF 字段数 

    NR 记录数

4、awk的字段数据处理

    -F 参数指定字段分隔符 

    BEGIN{FS="_"} 也可以表⽰分隔符 

    $0代表当前的记录 

    $1代表第⼀个字段 

    $N 代表第N个字段 

    $NF 代表最后⼀个字段 

    $(NF-1) 代表倒数第⼆个字段

5、awk字段分割

    echo $PATH | awk 'BEGIN{RS=":"}{print $0}' \ 

    | awk -F/ '{print $1,$2,$3,$4}' 

    echo $PATH | awk 'BEGIN{RS=":"}{print $0}' \ 

    | awk 'BEGIN{FS="/"}{print $1,$2,$3,$4}' 

    echo $PATH | awk 'BEGIN{RS=":"}{print $0}' \

    | awk 'BEGIN{FS="/|-"}{print $1,$2,$3,$4}'

    修改OFS和ORS让$0重新计算 

    echo $PATH | awk 'BEGIN{FS=":";OFS=" | "}{$1=$1;print $0}' 

    echo $PATH | awk 'BEGIN{RS=":";ORS="^"}{print $0}'

6、awk⾏处理

    把单⾏分拆为多⾏

    echo $PATH | awk 'BEGIN{RS=":"}{print $0}'

    echo $PATH | awk 'BEGIN{RS=":"}{print NR,$0}'

    echo $PATH | awk 'BEGIN{RS=":"}END{print NR}'

    多⾏组合为单⾏

    echo $PATH | awk 'BEGIN{RS=":"}{print $0}' |

    awk 'BEGIN{ORS=":"}{print $0}'

7、数据计算

    echo '1,10

    2,20

    3,30' | awk 'BEGIN{a=0;FS=","}{a+=$2}END{print a/NR}'

8、awk的词典结构

五、sed

   sed [addr]X[options]

   -e 表达式

   sed -n '2p' 打印第⼆⾏

   sed 's#hello#world#' 修改

   -i 直接修改源⽂件

   -E 扩展表达式

   --debug 调试

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值