linux三剑客awk、sed、grep

    1、awk主要用来做分列、匹配、计算的工作
    2、sed主要用来做替换的(流处理)
    3、grep主要用来过滤出需要的文本

awk(默认的分隔符为空格)awk    -F ":"  '/bonzi/{if (NR==2) print  $0}'(一般模式)

    -F    设置分隔符,可以设置多个分隔符     -F  "[:!]+"

    NR    表示行号

    $NF   表示尾行

    NF 当前记录中的字段个数


内置函数

gsub(r,s)

在整个$0中用s代替r

gsub(r,s,t)

在整个t中用s替代r

index(s,t)

返回s中字符串t的第一位置

length(s)

返回s长度

match(s,r)

测试s是否包含匹配r的字符串

split(s,a,fs)

在fs上将s分成序列a

sprint(fmt,exp)

返回经fmt格式化后的exp

sub(r,s)

用$0中最左边最长的子串代替s

substr(s,p)

返回字符串s中从p开始的后缀部分

substr(s,p,n)

返回字符串s中从p开始长度为n的后缀部分


sed(流编辑)sed  -n  '2s#原#改#g'    file

    -n取消默认输出

    -i修改内容

    -e允许多项编辑

    -r扩展正则

sed    -n    ‘/bonzi/s#原#改#gp’    file

sed    -i        '2,5s#原#改#g'    file

后项引用的例子:

[root@www test]# ifconfig eth1|sed -nr '2s#.*addr:(.*)  Bc.*$#\1#gp'
192.168.1.8



grep(过滤文本)

    -v排除

    -i不区分大小写

    -o只输出匹配到的内容

    -A打印匹配到后面的行,-A  3打印后三行

    -B打印匹配到的前面的行,-B  4打印前4行

    -C打印匹配到的上下文的行,-C    5打印上下5行