首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Shell编程-字符截取命令awk

一、awk基本使用方法

上一节讲了printf命令,这条命令在系统当中直接使用的几率不大。但是在awk命令当中,其标准输出命令就是printf。awk命令与cut命令的作用是一样的,截取符合条件的列,而grep是截取符合条件的行。但是也说了,cut命令也有它的局限性,要么是制表符、冒号、逗号、句号等这种规律的,不规律的就不能有效的截取。

awk本身也能有效的截取制表符、冒号、逗号这种,cut有的功能awk都有。为什么还需要cut命令呢?

awk本身是非常复杂的命令,不仅能够实现字符段的截取,还能实现编程调用(常见的如定义函数、流程判断等都可以。)所以一般把awk命令说成是awk编程。还是那句话,能用cut实现的就用cut命令,不能实现的再考虑awk。(awk默认是识别空格与制表符)

awk使用格式如下:

awk '条件1 条件2 ...' 文件名

条件(Pattern):

能识别的条件非常的多,一般使用关系表达式作为条件,比如x>10或x>=10或x

动作(Action):

格式化输出,最常见的也就是printf命令

流程控制语句,常见的如if、for等语句

说明如下:

数据处理过程:awk虽然是列提取,但是处理数据是先读第一行数据,然后把对应的数据赋给变量,$0代表整个这一行本身,$1代表第一列,以此类推。然后再来判断条件是否符合,执行动作输出对应的格式,直到数据读到最后一行的行尾才结束。

再比如awk处理df的数据,原先cut不能执行。

df -hT | grep "vda1" | awk ''

可是我最终只想要这个8,而不要这个%,怎么办?

df -hT |grep "vda1" |awk '' |cut -f 1 -d "%"

二、awk的条件BEGIN

BEGIN作用是在所有数据读取之前,执行后面的动作。

比如:

三、awk的分隔符

这里首先介绍FS内置变量,作用是指定分隔符。

比如:awk ‘BEGIN ’ /etc/passwd

四、awk的条件END

END作用是在所有数据读取之后,执行后面的动作,即{}中的内容。

五、关系运算符

比如:cat stu.txt |grep -v ID | awk '$4>=90 '

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200107A05TWG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券