awk 编程

本文介绍了awk语言的基础知识,包括其工作流程、常用命令和内置变量。awk主要用于处理文本,通过指定规则来筛选和格式化信息。文章通过示例展示了如何使用awk提取文件中的特定列,并解释了awk与grep、sed的区别。此外,还讨论了awk内置变量如$0、FS、RS等在实际操作中的应用。
摘要由CSDN通过智能技术生成

1、awk简介

  • awk可以读取输入文件、为数据排序、处理数据,对输入执行计算以及生成报表
  • awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文件文件中的信息。
  • grep、awk、sed三者之间区别,以MySQL的语句为例:
    Grep 数据查找定位 =》 select * from table
    Awk 数据切片 =》 select field from table
    Sed 数据修改 =》 update table set field = new where field=old

2、awk工作流程

  • 读输入文件之前执行的代码段(关键字:BEGIN)
  • 主循环执行输入文件的代码段。
  • 读输入文件之后的代码段(关键字:END)
  • 命令结构:
    awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

3、基础命令

awk '条件1 {动作1} 条件2 {动作2}...' 文件名

条件:一般使用关系表达式作为条件
x > 10    判断变量x是否大于10
x >= 10   大于等于10
x <= 10   小于等于10

动作:
	格式化输出
	流程控制语言

示例1:读取文档中的第一列和第二列

[root@rainbow ylxtest]# cat student.txt 
ID	NAME	chengji
1	ZhanSan	90
2	LiSi	88
3	WangWu	79
[root@rainbow ylxtest]# awk '{printf $1 "\t" $3"\n"}' student.txt 
ID	chengji
1	90
2	88
3	79

示例2:需求截取df -h /dev/vda1中第5列的数字,数字后面不需要任何单位
在这里插入图片描述

df -h |grep vda1 | awk '{printf $5 "\n"}' | cut -d "%" -f 1
18

4、awk内置变量

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

(1) 示例:截取以“ : “分割的内容

awk '{FS=":"}{printf $1 "\t" $3 "\n"}' /etc/passwd

[root@rainbow ylxtest]# awk ‘{FS=":"}{print $1}’ /etc/passwd
root❌0:0:root:/root:/bin/bash
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
问题:上面的命令第一行执行错误,修改命令如下即可解决

awk 'BEGIN {FS=":"}{printf $1 "\t" $3 "\n"}' /etc/passwd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值