Linux的文本处理之awk命令

本文详细介绍了Linux中awk命令的使用,包括其作为报告生成器的角色和各种基本用法。通过实例展示了如何指定分隔符、打印特定列、条件筛选、行号和列数的处理,以及文件名的输出等操作。

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

一、awk(报告生成器)

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一
这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识
awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )
awk处理机制:awk会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行做一些总结性质的工作,然后将结果展现给用户

二、awk的命令应用

在命令格式上分别体现如下 :
BEGIN{}:读入第一行文本之前执行,一般用来初始化操作
{}:逐行处理,逐行读入文本执行相应的处理,是最常见的编辑指令
END{}:处理完最后一行文本之后执行 , 一般用来输出处理

2.1 awk的基本用法1

(实验环境,我们在/mnt下面进行实验,将/etc/passwd里面的内容拷贝过来,留下一部分内容方便实验)
awk -F(指定分隔符) : ‘{print $1}’ passwd 打印passwd文件的以:为分隔符的第一列字符
在这里插入图片描述
awk -F :’{print $1$2}’ passwd 打印第一列和第二列,不会出现:分隔符
在这里插入图片描述
awk -F :’{print $2}’ passwd 打印第二列

在这里插入图片描述awk -F : ‘BEGIN{print “linux”}{print $2}’ passwd 打印第二列,并且在最前面加上linux
在这里插入图片描述
awk -F : ‘BEGIN{n=1}{print $2,n}’ passwd 在第二列后面 均写上1
在这里插入图片描述
awk -F : ‘BEGIN{n=1}{print $2,n++}’ passwd打印第二列,并且编号
在这里插入图片描述
awk -F : ‘BEGIN{n=1}{print n++,$1}’ passwd将编号在前
在这里插入图片描述
awk -F : ‘BEGIN{n=1}{print n++,$1}END{print “over”}’ passwd在后面写上over
在这里插入图片描述
awk -F : ‘BEGIN{n=1}{print n++,$1}END{print NR}’ passwd在结尾输出行数
在这里插入图片描述
awk -F : ‘BEGIN{n=1}{print n++,$1}END{print NF}’ passwd在结尾输出列数
在这里插入图片描述
awk ‘/bash/{print}’ passwd 输出包含bash的行的第一个字符

在这里插入图片描述
awk -F : ‘/bash/{print $1}’ passwd只输出第一个字符
在这里插入图片描述

awk -F : ‘NR=3{print $1}’ passwd第三行的第一个
在这里插入图片描述

awk -F : ‘NR=3{print}’ passwd第三行
在这里插入图片描述
awk -F : ‘NR>=4&&NR<=6{print}’ passwd456行
在这里插入图片描述
awk -F : 'NR4||NR6{print}’ passwd4和6行
在这里插入图片描述
awk ‘{print FILENAME}’ passwd输出文件名字
在这里插入图片描述
awk ‘{print $0}’ passwd输出行

在这里插入图片描述

2.2 awk的基本用法2

awk ‘BEGIN{a=34;print a+12}’ 输出a+12的值
在这里插入图片描述

awk ‘/1/{print}’ /etc/passwd 输出以a到d开头的行

在这里插入图片描述
awk ‘!/[a-d]/{print}’ /etc/passwd 输出不是以a到d开头的所有的行

在这里插入图片描述
awk ‘/^r|bash$/{print}’ /etc/passwd 输出以r开头或者以bash结尾的行

在这里插入图片描述
awk ‘/^r/&&/bash$/{print}’ /etc/passwd

在这里插入图片描述
awk ‘/^r/||/bash$/{print}’ /etc/passwd

在这里插入图片描述
awk -F : ‘ 6   / b i n 6~/bin 6 /bin/{print}’ /etc/passwd 打印第六列以bin结尾的行
在这里插入图片描述
awk -F : ‘KaTeX parse error: Expected 'EOF', got '\<' at position 4: 6~/\̲<̲bin/{print}’ /etc/passwd
在这里插入图片描述
awk -F : ‘ 6 !   / b i n 6!~/bin 6! /bin/{print}’ /etc/passwd 第六列不是以bin结尾的行
在这里插入图片描述


  1. a-d ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值