文本处理器 grep/awk/sed

文本处理器 grep/awk/sed

grep:文本过滤器

    grep ‘pattern’ input_file …

sed:流编辑器
    
awk:报告生成器

     格式化后显示
     a.k.a Aho, Kernighan and Weinberger

默认使用空格作为分隔符

new awk: nawk

# awk [options] ‘script’ file1 file2 …
示例:
    awk ‘{print $1,$4}’ t.txt # 只打印2个列
    awk ‘BEGIN{OFS=”:”}{print $1,$2,$3}’ t.txt    # 换分隔符
awk的输出:
    awk ‘BEGIN{OFS=”:”}{print $1,$2,$3,”bill”}’ t.txt # 插入自定义输出
    awk -F: ‘/^r*/{print $3}’ /etc/passwd # 以r起始的
    awk -F: ‘$3>=500{print $1,$3}’ /etc/passwd
    awk -F: ‘$3-4000>=500{print $1,$3}’ /etc/passwd 
    awk -F: ‘$7~”bash$”{print $3,$1,$7}’ /etc/passwd # 以bash结尾的
    awk -F: ‘$7!~”bash$”{print $3,$1,$7}’ /etc/passwd # 和上面取反
    awk -F: ‘$3==0,$7~”bash”{print $1,$3,$7}’ /etc/passwd
    awk -F: ‘$3==0,$7~”nologin”{printf “%10s%10s%20s\n”,$1,$3,$7}’ /etc/passwd # 多个逻辑条件是||的关系
    awk -F: ‘BEGIN{print “Username          Id        Shell”}$3==0,$7~”nologin”{printf “%10s%10s%20s\n”,$1,$3,$7}’ /etc/passwd  #上面的基础上利用BEGIN打印表头
    awk -F: ‘BEGIN{print “Username          Id        Shell”}$3==0,$7~”nologin”{printf “%10s%10s%20s\n”,$1,$3,$7}END{print “process finsh!”}’ /etc/passwd  # 在上面的基础上(END)打印表尾    
    awk -F: ‘{if ($1==”root”)print $1,”Admin”;else print $1,”Common User”}’ /etc/passwd 





发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注