|
|
一个条件满足,就执行条件后面{}内的动作。
没有条件就无条件执行{}内的动作,如果有条件,就只有满足条件才能执行{}内的动作。
awk的流程:依次读取每一行数据,读取完一行数据后,进行条件判断,如果满足条件,就执行该条件对应的动作,其中文件名为$0,剩下的每一列依次为$1\$2…,判断完一行后,继续判断下一行,直到知道文件全部判断完
|
|
BAGIN条件
条件BAGIN表示在所有动作执行前先执行BEGIN后的那个动作123df -h | awk 'BEGIN{print "test"}{print $1 "\t" $3}'会在最前面输出testawk在指定分隔符前面一定要加BEGIN
END条件
条件END表示在所有动作执行后才执行END后的那个动作12#df -h | awk 'END{print "test"}{print $1 "\t" $3}' 会在最后面输出test
FS内置变量
修改分隔符(默认为空格和制表符)
在修改FS的变量的动作前要加上BEGIN,这样在执行所有其它动作之前先修改分割符,否则读取第一行数据的时候不能识别指定的分隔符12345cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{print $1 "\t" #3}'#awk在指定分隔符前面一定要加BEGIN,此例截取第1、3列cat student.txt | grep -v Name | awk '$4>=70{print $2}'#此例截取除了列头的成绩大于等于70分的学生姓名,grep -v Name为取反命令,不输出带“Name”的行