1. 算术运算符:+,-,*,/,%

[root@oldboy test]# awk 'BEGIN{a=50;b=20;print "(a+b)=",(a+b)}'
(a+b)= 70
[root@oldboy test]# awk 'BEGIN{a=50;b=20;print("(a+b)=",(a+b))}'
(a+b)= 70
[root@oldboy test]# awk 'BEGIN{a=50;b=20;print "(a-b)=",(a-b)}'
(a-b)= 30
[root@oldboy test]# awk 'BEGIN{a=50;b=20;print "(a*b)=",(a*b)}'
(a*b)= 1000
[root@oldboy test]# awk 'BEGIN{a=50;b=20;print "(a/b)=",(a/b)}'
(a/b)= 2.5
[root@oldboy test]# awk 'BEGIN{a=50;b=20;print "(a%b)=",(a%b)}'
(a%b)= 10

2. 递增和递减运算符++,--

AWK支持 增量和减量运算符:

前递增

它是由++表示。

它由1递增操作数的值这个操作符先递增操作数的值,然后返回增加后的值。

例如在下面的例子中此操作者设定两个操作数的值,a和b加到11。

[root@oldboy test]# awk 'BEGIN { a = 10; b = ++a; printf "a = %d, b = %d\n", a, b }'
a = 11, b = 11

前减量

它由下式 -- 表示 。

操作数减去1,操作符首先递减操作数的值,然后返回递减值。

例如在下面的例子中此操作者设定两个操作数中的值,a和b至9。

# --a表示a=a-1,++a表示a=a+1
[root@oldboy ~]# awk 'BEGIN{a=10;print a,--a}'
10 9
[root@oldboy ~]# awk 'BEGIN{a=10;print a,--a,--a}'
10 9 8
[root@oldboy ~]# awk 'BEGIN{a=10;print a,--a,--a,++a}'
10 9 8 9
[root@oldboy ~]# awk 'BEGIN{a=10;print a,--a,--a,++a,++a}'
10 9 8 9 10

后递增

它是由++表示。

它递增操作数1的值,这个操作符首先将返回操作数的值,并增加它的值。

# 递增操作数1的值,首先会返回操作数的值,第一次a++返回原值
[root@oldboy ~]# awk 'BEGIN{a=10;print a++}'
10 # 先返回原值,再递增1
[root@oldboy ~]# awk 'BEGIN{a=10;print a++,a++}'
10 11
[root@oldboy ~]# awk 'BEGIN{a=10;print a++,a++,a++}'
10 11 12

后递减

它由--表示。

操作数-1,操作符首先返回操作数的值,再递减它的值。
[root@oldboy ~]# awk 'BEGIN{a=10;print a--,a--,a--}'
10 9 8

3. 赋值运算符=,+=,-=,*=,/=,%=,^=,**=

[root@oldboy ~]# awk 'BEGIN{name="Joe";print name}'
Joe [root@oldboy ~]# awk 'BEGIN{cnt=100;cnt+=10;print "Counter =",cnt}'
Counter = 110
[root@oldboy ~]# awk 'BEGIN{cnt=100;cnt-=10;print "Counter =",cnt}'
Counter = 90
[root@oldboy ~]# awk 'BEGIN{cnt=100;cnt*=10;print "Counter =",cnt}'
Counter = 1000
[root@oldboy ~]# awk 'BEGIN{cnt=100;cnt/=10;print "Counter =",cnt}'
Counter = 10
[root@oldboy ~]# awk 'BEGIN{cnt=100;cnt%=10;print "Counter =",cnt}'
Counter = 0
[root@oldboy ~]# awk 'BEGIN{cnt=100;cnt^=10;print "Counter =",cnt}'
Counter = 100000000000000000000
[root@oldboy ~]# awk 'BEGIN{cnt=100;cnt**=10;print "Counter =",cnt}'
Counter = 100000000000000000000

4. 关系运算符==,!=, <, <=, >, >=

[root@oldboy ~]# awk 'BEGIN{a=10;b=10;if (a==b) print( "a==b")}'
a==b
[root@oldboy ~]# awk 'BEGIN{a=10;b=20;if (a != b) print( "a != b")}'
a != b
[root@oldboy ~]# awk 'BEGIN{a=10;b=20;if (a < b) print( "a < b")}'
a < b
[root@oldboy ~]# awk 'BEGIN{a=10;b=20;if (a <= b) print( "a <= b")}'
a <= b
[root@oldboy ~]# awk 'BEGIN{a=10;b=20;if (b > a ) print( "b > a ")}'
b > a
[root@oldboy ~]# awk 'BEGIN{a=10;b=10;if (a >= b ) print( "a >= b ")}'
a >= b

5. 逻辑运算符 ||, &&

[root@oldboy ~]# awk 'BEGIN{num=5;if (num>=0 && num <= 7) printf "%d is in octal format\n",num}'
5 is in octal format [root@oldboy ~]# awk 'BEGIN{ch="\n";if (ch == " " || ch == "\t" || ch == "\n" ) print "Current character is whitespace."}'
Current character is whitespace. [root@oldboy ~]# awk 'BEGIN {name=""; if (! length(name)) print "name is empty string."}'
name is empty string.

6. 三元运算符

三元运算轻松实现条件表达式。

语法:

  condition expression ? statement1: statement2

当条件表达式返回值为true时,statement1被执行,否则执行statement2

[root@oldboy ~]# awk 'BEGIN{a=10;b=10;(a>b) ? max=a : max=b; print "Max =",max}'
Max = 10

7. 一元运算符:一元加法运算,一元减法运算

一元加法运算,由+表示,通过+1乘以单操作数。

一元减法运算,由-表示,通过-1乘以单个操作数。

# a = +a 即 a=a*1
[root@oldboy ~]# awk 'BEGIN{a=-10; print a= +a}'
-10 # -10*1=-10; -10 *1 =-10
[root@oldboy ~]# awk 'BEGIN{a=-10; print a= +a,a = +a}'
-10 -10 # -10 + (-10)=-20
[root@oldboy ~]# awk 'BEGIN{a=-10; print a= +a,a = +a+a}'
-10 -20 # -10 * -1 = 10
[root@oldboy ~]# awk 'BEGIN{a=-10; print a= +a,a = -a}'
-10 10

8. 指数运算符 ^, **

[root@oldboy ~]# awk 'BEGIN{a=10;a=a^2;print a}'
100
[root@oldboy ~]# awk 'BEGIN{a=10;a=a**2;print a}'
100

9. 字符串连接运算符

空格是字符串连接运算符,它能合并两个字符串。

[root@oldboy ~]# awk 'BEGIN{str1="Hello, ";str2="World";str3 = str1 str2;print str3}'
Hello, World

10. 数组成员运算符 in

通过in表示。在访问数组元素时使用。

[root@oldboy ~]# awk 'BEGIN{arr[0]=1;arr[1]=2;arr[2]=3;for (i in arr) printf "arr[%d]=%d\n",i,arr[i]}'
arr[0]=1
arr[1]=2
arr[2]=3

11. 正则表达式运算符 ~, !~

  • ~ 匹配
  • !~   不匹配
[root@oldboy ~]# awk '$0 ~ 99' /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
php001:x:819:999::/home/php001:/bin/bash
php002:x:820:999::/home/php002:/bin/bash
php003:x:821:999::/home/php003:/bin/bash
php004:x:822:999::/home/php004:/bin/bash
php005:x:823:999::/home/php005:/bin/bash
[root@oldboy ~]# awk '$0 ~ /99/' /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
php001:x:819:999::/home/php001:/bin/bash
php002:x:820:999::/home/php002:/bin/bash
php003:x:821:999::/home/php003:/bin/bash
php004:x:822:999::/home/php004:/bin/bash
php005:x:823:999::/home/php005:/bin/bash # 不匹配含有数字0-8的
[root@oldboy ~]# awk '$0 !~ /[0-8]/' /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin

【三剑客】awk运算符的更多相关文章

  1. Linux三剑客awk

    Linux三剑客awk awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式 awk早期在Unix上实现,我们用的awk是gawk,是GUN ...

  2. awk 运算符(算术运算符,赋值运算符,关系运算符,逻辑运算符,正则运算符)说明

    awk作为文本处理优秀工具之一,它有独自丰富的运算符.下面我们一起归纳总结一下,所有运算符. 可以分为:算术运算符,赋值运算符,关系运算符,逻辑预算法,正则运算符. 一.运算符介绍 运算符 描述 赋值 ...

  3. 性能工具之linux三剑客awk、grep、sed详解

    前言 linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, he ...

  4. Linux三剑客-AWK

    1.什么是awk AWK是一种处理文本文件的语言,是一个强大的文本分析工具.有统计和计算功能. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Br ...

  5. Linux 三剑客 -- awk sed grep

    本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...

  6. 文本三剑客---awk(gawk)基础

    gawk程序是Unix中原始awk程序的GNU版本.gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令.在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数 ...

  7. 三剑客-awk(简写)

    特殊要点:$0 表示整个当前行$1 每行第一个字段NF 字段数量变量NR 每行的记录号,多文件记录递增OFS 输出字段分隔符, 默认也是空格,可以改为制表符等ORS 输出的记录分隔符,默认为换行符,即 ...

  8. 三剑客-awk

    1.作用特点 排除信息 查询信息 统计信息 替换信息 2.语法格式 awk [参数] '模式-动作' 文件 3.awk命令执行原理 4.命令使用方法 创建测试环境 [root@shuai ~]# ca ...

  9. Linux三剑客之awk命令

    awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK 程 ...

随机推荐

  1. ML-Agents(六)Tennis

    目录 ML-Agents(六)Tennis 一.Tennis介绍 二.环境与训练参数 三.场景基本结构 四.代码分析 环境初始化脚本 Agent脚本 Agent初始化与重置 矢量观测空间 Agent动 ...

  2. 搭建单区域DNS服务器

                                                          搭建单区域DNS服务器 案例1:搭建单区域DNS服务器 案例2:特殊DNS解析 案例3:配置 ...

  3. jvm入门及理解(一)——简介与体系架构

    最近,在学习java虚拟机的内容中,在此总结和记录下学到的. 一.JVM在计算机中的位置 在我们初学java时,便知道java源文件文件会先通过Java编译器编译成字节码文件,这个过程是java编译过 ...

  4. [Python] 字符串加密解密

    1. 最简单的方法是用base64: import base64 s1 = base64.encodestring('hello world') s2 = base64.decodestring(s1 ...

  5. Java课程设计之——Web前端

    主要使用的技术 Javascript/JQuery html css Jsp 前期调查 能看到的网页大致可以分为两个部分,一个是搜索的首页index.html,一个是搜索结果页/s index.htm ...

  6. Trie(字典树、前缀树)

    目录 什么是Trie? 创建一棵Trie 向Trie中添加元素 Trie的查询操作 对比二分搜索树和Trie的性能 leetcode上的问题 什么是Trie?   Trie是一个多叉树,Trie专门为 ...

  7. Python的深浅copy详解

    Python的深浅copy详解 目录 Python的深浅copy详解 一.浅copy的原理 1.1 浅copy的定义 1.2 浅copy的方法 二.深copy的原理 2.1 深copy的定义 2.2 ...

  8. L16 LeNet

    **本小节用到的数据下载 1.涉及语句 import d2lzh1981 as d2l 数据1 : d2lzh1981 链接:https://pan.baidu.com/s/1LyaZ84Q4M75G ...

  9. Beta-release 目标

    在第二个release开发周期中我们首要先要完成的是对第一个发布版本的优化:(之前团队在跟travis的沟通中,travis也要求我们首先要把现在已有的feature做到一个比较成熟和稳定的版本) 1 ...

  10. 详解 File类

    在讲解File类之前,本人先要讲解下 路径,因为我们对于文件的操作是离不开路径的: 目录 路径: File类 文件名称过滤器: 路径: 请观看本人博文 -- <详解 绝对路径与 相对路径> ...