Shell学习笔记 awk命令

本文详细介绍awk编程语言的基础和高级用法,包括条件判断、数组、循环功能,以及如何使用awk进行数据列的提取,通过具体实例讲解awk的语法和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、awk的简介

其实一门编程语言,支持条件判断,数组,循环等功能,与grep,sed被称为linux三剑客之所以AWK是因为取其三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符

2、awk的应用场景

通常对数据进行列的提取

3、语法

awk '条件 {执行动作}'文件名

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

或awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名

4、相关指令


第一部分:awk初级使用

知识要点:

  • awk 默认以空格作为分隔符
  • awk 可以使用 -F 指定分隔符
符号含义
-F指定分隔符
$1代表第一列
$2代表第二列
$0代表一整行

awk ‘{print}’ 1.txt #逐行读取文件1.txt内容并打印
在这里插入图片描述

awk ‘{print $0}’ 1.txt #逐行读取文件内容,并打印该行,$0保存的是当前行的内容
在这里插入图片描述

awk ‘{print “hello”}’ 1.txt #逐行读取1.txt文件内容,每行结束后打印一个hello
在这里插入图片描述

awk ‘{print $1}’ 1.txt #打印1.txt的第一列内容,在不指定分割符的情况下,awk默认使用空白做分割符
在这里插入图片描述

awk -F “:” ‘{print $1}’ /etc/passwd #以":"为分隔符打印/etc/passwd文件的第一列内容
在这里插入图片描述

第二部分: awk高级使用

知识点:

指令含义
BEGIN在读取所有行内容前就开始执行,常常被用于修改内置变量的值
FSBEGIN时定义分割符
END结束的时候 执行
NR记录的是当前行的行号
NF记录的是当前行中有多少列
$NF记录的是当前行最后一列的内容

在awk中使用正则匹配,正则表达式必须要放在//中

awk ‘/123/{print}’ 1.txt #打印1.txt中匹配123的那一行内容
在这里插入图片描述

awk提供了多个比较操作符:"==" “>” “<” “<=” “>=” “!=” "~"匹配 "!~"不匹配

awk ‘BEGIN{ FS=":"} $1 == “root” {print $3}’ /etc/passwd #以":"为分隔符,打印/etc/passwd中第一列是root的当前行的第三列
在这里插入图片描述

awk ‘BEGIN {FS=":"} {if ($1 ~ “root”) {print $2}}’ /etc/passwd #以":"为分隔符,打印/etc/passwd文件中第一列
在这里插入图片描述

awk ‘/ock/{print NF}’ 1.txt # 统计匹配ock的行有多少列
在这里插入图片描述

awk ‘NF == 3 {print}’ 1.txt #打印1.txt中有3列的行的内容
在这里插入图片描述

awk ‘{if (NR > 3) {print $NF} }’ 1.txt # 输出1.txt中行号大于3的行,其最后一列的内容
在这里插入图片描述

awk ‘{if (NR > 3) {print NR".\t"$0} }’ 1.txt #格式化输入1.txt中行号大于3的行的行号和内容
在这里插入图片描述

参考资料:https://www.jb51.net/article/157432.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值