Shell脚本-三剑客实战

本文介绍了Shell脚本中的三剑客——awk, sed, grep的实战应用。详细讲解了awk的字段处理、运算符、内置变量、正则表达式及其在数据处理中的用法;sed的定位、命令、选项和常见操作;grep的模式匹配、选项和统计功能。通过实例展示了这三个工具的强大功能。" 1716550,230260,使用UIP构建灵活的MVC流程控制,"['UI设计', 'MVC框架', '流程管理', 'XML', '状态持久化']
摘要由CSDN通过智能技术生成
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&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值