≡菜单

7个强大的3d捕鱼达人运算符示例(一元,二进制,算术,字符串,赋值,条件,Reg-Ex 3d捕鱼达人运算符)

Linux 3d捕鱼达人教程-3d捕鱼达人 Reg-Ex运算符示例本文是正在进行的3d捕鱼达人教程示例系列的一部分。在之前的awk文章中,我们讨论了有关 awk打印, awk用户定义的变量awk内置变量.

像任何其他编程语言一样,3d捕鱼达人也有很多用于数字和字符串运算的运算符。在本文中,让我们讨论所有关键 awk运算符.

3d捕鱼达人中有两种类型的运算符。

  1. 一元运算符–接受单个操作数的运算符称为一元运算符。
  2. 二元运算符–接受多个操作数的运算符称为二进制运算符。

3d捕鱼达人一元运算符

操作员 描述
+ 正数
取反数字
++ 自动递增
自动减量

3d捕鱼达人二元运算符

3d捕鱼达人中提供了各种二进制运算符。根据其用途分类。

3d捕鱼达人算术运算器

以下运算符用于执行算术计算。

操作员 描述
+ 加成
减法
* 乘法
/
% 模科

3d捕鱼达人字符串运算符

对于字符串连接,3d捕鱼达人具有以下运算符。

操作员 描述
(空间) 字符串串联

3d捕鱼达人分配运算符

3d捕鱼达人具有“赋值”运算符和“快捷方式”赋值运算符,如下所示。

操作员 描述
= 分配
+ = 快捷方式添加分配
-= 快捷方式减法分配
* = 快捷方式乘法分配
/ = 快捷方式部门分配
%= 快捷模除法分配

AWK条件运算符

3d捕鱼达人具有以下条件运算符列表,可与控制结构和循环语句一起使用,这些将在下一篇文章中介绍。

操作员 描述
> 大于
>= 大于或等于
< 小于
<= 小于或等于
<= 小于或等于
== 等于
!= 不等于
&& 两个条件表达式都应该为真
|| 条件表达式中的任何一个都应该为真

AWK正则表达式运算符

操作员 描述
~ 匹配运算符
!〜 无匹配运算符

AWK运算符示例

现在,让我们回顾一些使用awk运算符的示例。在这些示例中,让我们使用/ etc / passwd作为输入文件。

$ cat /etc/passwd
gnats:x:41:41:Gnats Bug-Reporting System(admin):/ var / lib / gnats:/ bin / sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
saned:x:110:116::/home/saned:/bin/false
pulse:x:111:117:PulseAudio daemon,,,:/var/run/pulse:/bin/false
gdm:x:112:119:Gnome Display Manager:/var/lib/gdm:/bin/false

3d捕鱼达人 Example 1: Count the 总 number of fields in a file.

以下awk脚本匹配所有行,并使用快捷方式添加赋值运算符不断添加每行中的字段数。到目前为止看到的字段数保留在名为‘total’。输入被处理后,特殊模式‘END {…}’ is executed, which prints the 总 number of fields.

$ awk -F':' '{ 总 + = NF }; 结束 { print 总 }' /etc/passwd
49

3d捕鱼达人示例2:计算使用/ bin / sh shell的用户数

In the below awk script, it matches last field of all lines containing the pattern /bin/sh. Regular expression should be closed between //. So all the frontslash(/) has to be escaped in the regular expression. When a line matches variable ‘n’ gets incremented 通过 上 e. Printed the value of the ‘n’ in the END section.

$ awk -F':' '$NF ~ /\/bin\/sh/ { n++ }; 结束 { print n }' /etc/passwd
2

3d捕鱼达人示例3:查找拥有最高USER ID的用户详细信息

下面的awk脚本跟踪变量中字段中的最大数目‘maxuid’并且相应的行将存储在变量中‘maxline’。遍历所有行后,将其打印出来。

$ awk -F':'  '$3 > 上颌骨 { 上颌骨=$3; 麦克斯林=$0 }; 结束 { print 上颌骨, 麦克斯林 }' /etc/passwd
112 gdm:x:112:119:Gnome Display Manager:/var/lib/gdm:/bin/false

3d捕鱼达人示例4:打印偶数行

以下awk脚本处理每行并检查NR%2 == 0,即NR是否为2的倍数。它执行默认操作,即打印整行。

$ awk 'NR % 2 == 0' /etc/passwd
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:111:117:PulseAudio daemon,,,:/var/run/pulse:/bin/false

3d捕鱼达人示例5:打印具有相同USER ID和GROUP ID的每一行

仅当$ 3(USER ID)和$ 4(GROUP ID)相等时,以下awk脚本才会打印该行。它为输入的每一行检查此条件,如果匹配,则打印整行。

$ awk -F':' '$3==$4' passwd.txt
gnats:x:41:41:Gnats Bug-Reporting System(admin):/ var / lib / gnats:/ bin / sh

3d捕鱼达人示例6:打印用户ID大于或等于100且必须使用/ bin / sh的用户详细信息

在下面的3d捕鱼达人语句中,有两个条件表达式,一个是User id($ 3)大于或等于100,第二个是最后一个字段应与/ bin / sh匹配,‘&&’仅当以上两个条件均成立时才打印。

$ awk -F':' '$3>=100 && $NF ~ /\/bin\/sh/' passwd.txt
libuuid:x:100:101::/var/lib/libuuid:/bin/sh

3d捕鱼达人示例7:打印用户详细信息’在/ etc / passwd文件中有注释

下面的3d捕鱼达人脚本读取每行并检查第五个字段是否为空,如果为空,则打印该行。

$ awk -F':' '$5 == "" ' passwd.txt
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
saned:x:110:116::/home/saned:/bin/false

推荐读物

Sed和3d捕鱼达人 101骇客,作者:Ramesh Natarajan。我每天在UNIX / Linux环境上花费数小时来处理文本文件(数据,配置和日志文件)。我所有的文本处理工作都使用Sed和3d捕鱼达人。根据我在Sed和3d捕鱼达人的经验,’编写了Sed和3d捕鱼达人 101 Hacks电子书,其中包含有关Sed和3d捕鱼达人各种高级功能的101个实用示例,这些示例将延长UNIX / Linux的寿命。即使您已经使用Sed和3d捕鱼达人已有数年并且没有读过这本书,也请您帮个忙并阅读这本书。 Sed和3d捕鱼达人实用程序的功能会让您惊讶。

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和3d捕鱼达人 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 2 评论… 加一 }

  • 法兰克 2010年11月18日,晚上11:54

    好,$ NF也可以用$ 0代替

  • hamsolo474 2011年10月20日,上午4:06

    在awk示例5中
    $ awk -F‘:’ ‘$3==$4’ passwd.txt
    gnats:x:41:41:Gnats Bug-Reporting System(admin):/ var / lib / gnats:/ bin / sh

    我无法让我的电话上班
    awk -F‘”,”|”‘ “$1 ==1{print $6;}” joblist2.csv
    即时通讯使用awk来引用CSV中的字段,我已经编号了所有行,这就是正则表达式要查找的内容
    我不能为我的生活弄清楚为什么它不起作用

发表评论