运维

运维工程师的成长路

运维——三剑客awk(二)

在第一篇AWK博客中学习了awk的基本格式和基本的用法,再来复习一下他的基本格式:

awk  [options]  'program'  file ...

其中program有两部分组成:pattern 和 {action  statement;...}

pattern部分决定动作语句何时触发及触发事件

BEGIN,END

action statements对数据进行处理,放在{}内指明

action 主要是print 和printf 

之前已经了解过print 本次来学习printf(列和列之间的对齐)

printf命令
格式化输出:printf “FORMAT”, item1, item2, ...
(1) 必须指定FORMAT
(2) 不会自动换行,需要显式给出换行控制符,\n
(3) FORMAT中需要分别为后面每个item指定格式符
格式符:与item一一对应
%c: 显示字符的ASCII码
%d, %i: 显示十进制整数
%e, %E:显示科学计数法数值
%f:显示为浮点数
%g, %G:以科学计数法或浮点形式显示数值
%s:显示字符串
%u:无符号整数
%%: 显示%自身
修饰符:

#[.#]:第一个数字控制显示的宽度(即输出多少个字符或数字);

                                   第二个#表示小数点后精度%3.1f

-: 左对齐(默认右对齐)
+:显示数值的正负符号 

既然是格式化输出那么一定要有格式,如果没有格式会怎么样呢?


此时用printf如果没有指定格式那么就是上面这个情况,所以我们在使用printf之前必须要对其格式进行定义(定义之前请认真学习上面的内容)



操作符
算术操作符:
x+y, x-y, x*y, x/y, x^y, x%y
-x: 转换为负数
+x: 转换为数值
字符串操作符:没有符号的操作符,字符串连接
赋值操作符:
=, +=, -=, *=, /=, %=, ^=
++, --
下面两语句有何不同
awk ‘BEGIN{i=0;print ++i,i}’输出结果为 1 1
awk ‘BEGIN{i=0;print i++,i}’输出结果为 0 1
逻辑操作符:与&&,或||,非!
示例:
awk –F: '$3>=0 && $3<=1000 {print $1}' /etc/passwd
awk -F: '$3==0 || $3>=1000 {print $1}' /etc/passwd
awk -F: ‘!($3==0) {print $1}' /etc/passwd
awk -F: ‘!($3>=500) {print $3}’ /etc/passwd

之前要进行计算可以使用bc,现在也可以使用print来计算例如:



赋值操作符


逻辑操作符







i有值为真,没有值为假,输出结果1为真,0为假



条件表达式(三目表达式):
condition?if-true-expression:if-false-expression

    先判断条件,如果条件为真执行问号后的语句,如果条件为假执行冒号后的语句

例:




模式匹配符:
~:左边是否和右边匹配包含 !~:是否不匹配


查找包含root的行并以冒号为分隔符输出第一个字段


查找不包含root的行并以冒号为分隔符输出第一个字段













阅读更多
个人分类: linux运维
想对作者说点什么? 我来说一句

Linux三剑客awk sed grep全攻略

2017年07月14日 2.37MB 下载

没有更多推荐了,返回首页

不良信息举报

运维——三剑客awk(二)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭