标签:end 正式 dmi || 输出 简单 lock mon pattern
awk是一个文本处理工具,通常用于处理数据并生成结果报告
awk的命名来自它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母
内置变量 | 含义 |
---|---|
$0 | 整行内容 |
$1-$n | 当前行的第1-n个字段 |
NF | 当前行的字段个数,也就是有多少列 Number Field |
NR | 当前行的行号,从1开始计数。 Number Row |
FNR | 多文件处理时,每个文件行号单独计算。 File Number Row |
FS | 输入字段分隔符,不指定默认以tab或空格进行分隔 Filed Separator |
RS | 输入行分隔符,默认回车换行 Row Separator |
OFS | 输出字段分隔符,默认为空格 |
ORS | 输出行分隔符,默认为回车换行 |
$ awk ‘{print $0}‘ passwd # print 打印命令 $0 代表整行输出
$ awk ‘BEGIN{FS=":"}{print $1}‘ passwd # print 打印命令 $1 代表分割后的第一列,指定分隔符为:
nobody
root
daemon
$ awk ‘{print $1}‘ demo.txt # 默认以空格或tab进行分割的
$ awk ‘{print NF}‘ demo.txt # 内置变量直接写即可,不需要加$去引用
格式符号 | 含义 |
---|---|
%s | 打印字符串 |
%d | 打印十进制数 |
%f | 打印浮点数 |
%x | 打印十六进制数 |
%o | 打印八进制数 |
%e | 打印数字的科学记数法形式 |
%c | 打印单个字符的ASCII码 |
$ awk ‘BEGIN{FS=":"}{printf "%s\n", $1}‘ passwd # 和print一样
$ awk ‘BEGIN{FS=":"}{printf "%s %s\n", $1,$3}‘ passwd
# 当指定位数后,默认使用右对齐, 如果不加入填充位数,默认右对齐
$ awk ‘BEGIN{FS=":"}{printf "%30s %20s\n", $1,$7}‘ passwd # 填充位数,默认右对齐, 右对其使用 +
nobody /usr/bin/false
root /bin/sh
daemon /usr/bin/false
_uucp /usr/sbin/uucico
$ awk ‘BEGIN{FS=":"}{printf "%-30s %-20s\n", $1,$7}‘ passwd # 填充位数,左对齐, 左对齐使用 -
nobody /usr/bin/false
root /bin/sh
daemon /usr/bin/false
_uucp /usr/sbin/uucico
$ awk ‘BEGIN{FS=":"}{printf "%0.3f\n", $3}‘ passwd # 保留3位小数
# 打印8进制或者18进制的时候显示前面的标识 %后面加上 # 即可
$ awk ‘BEGIN{FS=":"}{printf "%#x\n", $3}‘ passwd # #x 表示加入16进制的标识0x
$ awk ‘BEGIN{FS=":"}{printf "%#o\n", $3}‘ passwd # #o 表示加入16进制的标识0
语法格式 | 含义 |
---|---|
RegExp | 按正则表达式进行匹配 |
关系运算 | 按关系运算匹配 |
$ awk ‘BEGIN{FS=":"}/root/{print $0}‘ passwd # 包含root的行
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
$ awk ‘BEGIN{FS=":"}/^root/{print $0}‘ passwd # 以root开头的行
root:*:0:0:System Administrator:/var/root:/bin/sh
$ awk ‘BEGIN{FS=":"}$7=="/bin/bash"{print $0}‘ passwd #第7列是/bin/bash的匹配
_mbsetupuser:*:248:248:Setup User:/var/setup:/bin/bash
$ awk ‘BEGIN{FS=":"}$1=="root" || $1=="hdfs"{print $0}‘ passwd
关系运算符 | 说明 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
~ | 匹配正则表达式 |
!~ | 不匹配正则表达式 |
|| | 布尔运算 或 |
&& | 布尔运算 与 |
! | 布尔运算 非 |
运算符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模 |
^或** | 乘方 |
++x | 在返回x变量之前, x加1 |
x++ | 返回x变量后,x加1 |
$ awk ‘BEGIN{var=2;var1="hello";print var,var1}‘
2 hello
$ awk ‘BEGIN{var=2;var1=3.5;print var+var1}‘
5.5
$ awk ‘/^$/{sum++}END{print sum}‘ passwd # 统计空行的数量 sum 没有初始化赋值,默认为0
$ awk ‘/root/{sum++}END{print sum}‘ passwd # 统计包含root的行的数量
awk编程的内容极多,这里只罗列简单常用的用法,更多请参考 http://www.gnu.org/software/gawk/manual/gawk.html
标签:end 正式 dmi || 输出 简单 lock mon pattern
原文地址:https://www.cnblogs.com/itgiser/p/14533776.html