通常情况下 awk 所使用的命令格式如下所示,其中,单引号加上大括号“{}”用于设置对数据进行的处理动作。awk 可以直接处理目标文件,也可以通过“-f”读取脚本对目标文件进行处理。
awk 选项 ‘模式或条件 {编辑指令}’ 文件 1 文件 2 … //过滤并输出文件中符合条件的内容
awk -f 脚本文件 文件 1 文件 2 … //从脚本中调用编辑指令,过滤并输出内容
awk 包含几个特殊的内建变量(可直接用)如下所示:
内建变量 | 含义 |
---|---|
FS | 指定每行文本的字段分隔符,默认为空格或制表位 |
NF | 当前处理的行的字段个数 |
NR | 当前处理的行的行号(序数) |
$0 | 当前处理的行的整行内容 |
$n | 当前处理行的第 n 个字段(第 n 列) |
FILENAME | 被处理的文件名 |
RS | 数据记录分隔,默认为\n,即每行为一条记录 |
[root@localhost ~]# awk '{print}' test.txt //效果等同于cat 123 123 123 123 123 xxx xxx xxx hhh hhh the boy is not boy this dog like cat kdskldsf jkldjfsl
[root@localhost ~]# awk 'NR==1,NR==3{print}' test.txt //输出第 1~3 行内容 123 123 123 123 123 xxx xxx xxx hhh hhh the boy is not boy [root@localhost ~]# awk '(NR>=1)&&(NR<=3){print}' test.txt //输出第 1~3 行内容 123 123 123 123 123 xxx xxx xxx hhh hhh the boy is not boy
[root@localhost ~]# awk 'NR==1||NR==3{print}' test.txt //输出第 1 行、第 3 行内容 123 123 123 123 123 the boy is not boy
[root@localhost ~]# awk '(NR%2)==1{print}' test.txt //输出所有奇数行的内容 123 123 123 123 123 the boy is not boy kdskldsf jkldjfsl
[root@localhost ~]# awk '(NR%2)==0{print}' test.txt //输出所有偶数行的内容 xxx xxx xxx hhh hhh this dog like cat
[root@localhost ~]# awk '/^root/{print}' /etc/passwd //输出以root 开头的行 root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}' /etc/passwd 6 //统计以/bin/bash 结尾的行数,等同于 grep -c /etc/passwd
[root@localhost ~]# awk '{print $3}' test.txt //输出每行中(以空格或制表位分隔)的第 3 个字段 123 xxx is like
[root@localhost ~]# awk -F: '/bash$/{print | "wc -l"}' /etc/passwd //调用wc -l 命令统计使用 bash 的用户个数,等同于 grep -c /etc/passwd 6
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2018 群英 版权所有 茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号-36 粤公网安备 44090202000006号 粤工商备P091701000595