Shell脚本-三剑客实战

awk

第一条命令探路
原 /etc/passwd 数据:
在这里插入图片描述

awk -F’:’ ‘{print $1,$2,$6}’ /etc/passwd

在这里插入图片描述
意思很明显:将/etc/passwd文件中的数据,先以":"分割,然后取第1、第2、第6列,打印出来。

-F’:’ 指定冒号为分割符

==’{print $1,$2,$6}’==脚本代码块

执行脚本中的 BEGIN \ END模块
一般地,对每个输入行,awk 都会将脚本代码块执行一遍。然而在很多编程情况下,我们希望在整个过程中只执行一次初始化代码和结束收尾代码,也可以不用。对应的在awk中指的就是BEGIN \ END模块。通常情况下,使用BEGIN 模块初始化 FS(字段分隔符)变量、打印页眉或初始化其它全局变量,而END模块则用来做汇合计算、打印页脚或其他释放资源的工作。

运算符

运算符 描述
= += -= *= /= %= ^= **= 赋值语句
|| 逻辑或
&& 逻辑与
~ !~ 匹配正则表达式和不匹配正则表达式
< <= > >= != == 关系运算符
+ - 加,减
* / & 乘,除,求余
+ - ! 加,减,逻辑非
^ *** 求幂
++ – 自加,自减
$ 字段引用
空格 字符串链接符
?: 三目运算符
In 数组中是否存在某键值

使用举例

  • awk ‘BEGIN{a = 5;a += 5;print a}’
    在这里插入图片描述
  • awk ‘BEGIN{a = 1;b = 2;print (a > 2 && b > 1,a = 1 || b > 1)}’
    在这里插入图片描述
  • awk ‘BEGIN{a=“100testaaa”;if(a~/100/){print “ok”}}’
    在这里插入图片描述
  • awk ‘BEGIN{a=11;if(a>=9){print “ok”}}’
    在这里插入图片描述
  • awk ‘BEGIN{a=“b”;print a++,++a}’
    在这里插入图片描述
  • awk ‘BEGIN{a=“b”;print a==“c”?“ok”:“err”}’
    在这里插入图片描述

内置变量

变量名 属性
$0 当前整行
$1~$n 当前行的第 n 个字段
FS 输入字段分隔符,默认是空格
RS 输入记录分割符,默认为换行符
NF 当前行中的字段个数,也就是有多少列
NR 已经读出的记录数,就是行号,从 1 开始
OFS 输出字段分隔符,默认也是空格
ORS 输出的记录分隔符,默认为换行符

使用举例

  • awk ‘BEGIN{FS="\t"}{print $1,$2,$3}’ data.txt
    FS指定tab为分隔符
    在这里插入图片描述
  • awk ‘BEGIN{FS="[[:space:]+]"}{print $1,$2,$3}’ data.txt
    默认空格
    在这里插入图片描述
  • awk ‘BEGIN{FS="[[:space:]+]"}NF=2{print $1,$2,$3}’ data.txt
    awk ‘BEGIN{FS="[[:space:]+]"}NF=3{print $1,$2,$3}’ data.txt
    NF指定列的数量
    在这里插入图片描述
  • awk ‘BEGIN{FS="[[:space:]+]"}NR&
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值