e21e1 发表于 2015-4-28 08:27:14

awk的简单使用方法

一、简介
二、语法
三、action:执行动作
四、选项
五、内置变量NF

一、简介
    awk常用于分析数据生成报表,它将文件逐行读入,使用分隔符将数据分段后,进行处理。awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母,Linux中的awk通常说的是gawk。

二、语法
awk ‘/pattern/{action}’/path/to/file

地址定界/pattern/:
    pattern1,pattren2:指定的行
    /pattern/:可以仅仅是模式匹配的行
    expression:可以表达式
?

1
2
# awk -F: '$3>500{print $1,$3,$7}' /etc/passwd    #分段后,用表达式比较第3段uid的值,
student 501 /bin/bash




    BEGIN:在处理任意行之前进行的操作
?

1
2
3
4
# awk -F: 'BEGIN{print "username uid shell"}$3>500{print $1,$3,$7}' /etc/passwd    #此处意为在处理数据前,在行首先打印标题内容
username uid shell
student 501 /bin/bash
You have new mail in /var/spool/mail/root




    END:行数据处理完后进行收尾操作
?

1
2
3
# awk -F: '$3>500{print $1,$3,$7}END{print "username uid shell"}' /etc/passwd    #此处意为行数据处理完后,在末行打印标题内容
student 501 /bin/bash
username uid shell





三、action:执行动作
    print:打印内容到屏幕
    printf:按照格式打印内容到屏幕

四、选项
    -F:指定分隔符
?

1
2
3
4
# awk -F: '/bash/{print $1,$3,$7}' /etc/passwd    #匹配内容中有“bash”的行,以分隔符“:”分段,打印第1、第3、第7段内容
root 0 /bin/bash
mockbuild 500 /bin/bash
student 501 /bin/bash





五、内置变量NF
    NF:Number of Filed,段数
    $NF:最后一列
?

1
2
3
4
5
6
7
8
9
# echo $PWD    #此路径由3个分号分隔成4段内容
/etc/rc.d/init.d
# echo $PWD | awk -F/ '{print $1}'   #从结果看出第一段为分号前内容

# echo $PWD | awk -F/ '{print $NF}'    #$NF表示最后一段
init.d
# echo $PWD | awk -F/ '{print NF}'    #NF表示分隔的段数
4
#



页: [1]
查看完整版本: awk的简单使用方法