awk命令进阶操作(一)

本文详细介绍了awk的基本格式、变量使用、分隔符设置、如何显示系统用户名、结合正则表达式进行搜索和过滤,以及awk的强大文本处理功能,包括匹配、提取和运算符的应用。
摘要由CSDN通过智能技术生成

awk的基本格式

awk [选项] '模式{动作}' 文件

模式 在处理一行之前先要判断条件
1.如果条件满足,就处理这行否则就下一行
2.如果不设置条件,则处理文件中的每一行
动作
1.模式中的条件在满足的情况,对这行内容执行的操作
选项
-F “分隔符”:用什么字符将这行内容分成一段一段

awk概念

1.基础概念

记录:一行就是一条记录
字段:一列就是一个字段
分隔符:分隔符就是将记录分割成若干个字段

2.变量

NF 表示字段数(当前这个记录中的字段的个数)
FS 表示字段分隔符(默认空格)
NR 表示记录数,在执行过程中对应于当前的行号
OFS 输出域分隔符
ORS 输出记录分隔符(默认值是一个换行符)
RS 记录分隔符(默认也是一换行符)

awk 表示每一段的方法

$1:第一个字段
$2:第二个字段
$3:第三个字段
$NF:表示每行的最后一个字段
$0:表示一整行

awk 分隔符

awk 分隔符
指定用什么来将这个记录分成一段一段的

  • 数字
  • 字母
  • 符号
  • 空格,默认是以空格为分隔符【可以省略-F】

基础 显示系统中的全部用户名

awk显示系统中的全部用户名
awk -F ":" '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
.......

详细解读 awk -F ":" '{print $1}'/etc/passwd
awk 用于处理文本文件。它能够对文本进行复杂的格式处理,是Linux中功能强大的数据处理引擎之一

-F 选项用于指定输入字段的分隔符。在这个命令中,-F “:” 意味着以冒号(:)作为字段的分隔符

{print $1} 是awk的基本语法之一,表示对每一行执行的操作。在这个例子中,{print $1} 表示打印出每一行的第一个字段,即用户名

/etc/passwd 是Linux系统中的一个配置文件,存储了系统中所有用户的基本信息。每个用户的信息都以":"作为分隔符,划分为7个字段,其中包括用户名、加密密码、用户ID等

awk NR 显示系统中的前三个用户

awk显示系统中的前三个用户
awk -F ":" 'NR<=3{print $1}' /etc/passwd
root
bin
daemon

NR awk的内置变量,表示正在读取的是第几条记录

1.当读取第一行内容的时候,NR的值是1;当读取第二行的时候,NR的值是2,依次类推
2.每读取一行内容,NR的值自动加1

awk结合正则表达式

在awk中进行搜索操作

格式
awk -F ":" '/过滤的内容/{print xxx}'

awk和.*的结合使用

awk -F ":" '/r.*t/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

awk的表达式

匹配特定字符串:可以使用正则表达式来检查输入行是否包含某个特定的字符串。例如,awk ‘/smithern/’ testfile 会打印出任何包含 “smithern” 字符串的记录

模糊匹配:正则表达式支持模糊匹配,允许你指定一个模式,然后在文本中搜索所有与该模式相似的字符串。例如,awk ‘{if($3~/97/) print $0}’ 会打印出任何第三列包含数字 97 的行

提取字段:awk 允许使用正则表达式来提取文本中的字段。这对于处理复杂的文本数据非常有用。例如,你可以使用正则表达式来指定哪些字符应该被视为字段分隔符

使用内置函数:awk 提供了一些内置函数,这些函数可以与正则表达式结合使用,以执行更复杂的文本处理任务。例如,你可以使用内置函数来获取字段并应用正则表达式匹配,或者匹配并提取捕获组

过滤输出:正则表达式的一个重要用途是过滤命令或文件的输出。你可以使用正则表达式来定义一个模式,然后 awk 会根据这个模式来决定是否打印某行文本。这对于编辑文本或配置文件的一部分等操作非常有用

运算符:awk 支持正则表达式的匹配运算符(波浪线 ~),用于计算模式是否匹配。如果输入行中的某个字符串与正则表达式相匹配,则执行与该表达式关联的操作

特殊字符:正则表达式中包含多种特殊字符,如点号(.)用于匹配除换行符外的任何单个字符,加号(+)用于指定一个或多个字符或扩展正则表达式的具体值

  • 40
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值