linux下awk的典型用法示例

本文介绍如何使用awk命令从/etc/passwd文件中筛选特定的行,包括匹配特定用户、列条件和执行复杂操作。通过一系列示例展示awk的强大功能,帮助用户高效地处理和分析文件数据。

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

打印包含root的行

awk -F":" '{if($1~/root/) print $1}' /etc/passwd

匹配root,并打印第一列

awk -F":" '/root/{print $1}' /etc/passwd   

打印第四列等于100的行

awk -F":" '$4==100 {print $0}' /etc/passwd  

打印不包含root的行

awk -F":" '$1 !~ /root/ {print $0}' /etc/passwd   

打印第一列不等于root的行

awk -F":" '$1 != “root” {print $0}' /etc/passwd  

如果第三列小于第四列,则打印此行

awk -F":" '$3 < $4 {print $0}' /etc/passwd  

匹配两列之和为155

awk -F":" '$3 + $4 == 155 {print $0}' /etc/passwd   

打印两列相加结果

awk -F":" ' {print $3,$4,"Total is:"$3 + $4 }' /etc/passwd  

区配某字段

awk '/[Rr]oot/' /etc/passwd  

抽取名字,其记录第一域的第四个字符是a,使用句点.。表达式/ ^ . . . a /意为行首前三个字符任意,第四个是a,尖角符号代表行首

awk '/^...s/' /etc/passwd     

匹配包含root或net或ucp的任意行

awk '/(root|net|ucp)/' /etc/passwd   

匹配以数字开头的行

awk '/^[0-9]/' group.txt     

打印0-10之间的行

awk 'NR>0 && NR<10{print NR,$0}' passwd 

打印大于7列的行

awk -F: 'NF>7 {print NF,$0}' passwd  

如果第31行超过8列,就打印这一行的第1列

awk -F: '{if (NF==8 && NR==31)print NR,$1}' passwd  

将包含/root的字段替换为admin

awk 'gsub(/root/,"admin") {print $0}' passwd 

如果第一列长度为4则打印此行

awk -F: 'length($1)==4 {print $0,length($1)}' passwd   

将命令传给awk

awk '$3==day {print $0}' day=`date +%d` /tmp/te.log   
Awk 是一种文本处理工具,它被广泛用于 Linux 系统中的文本处理和数据提取。它基于模式匹配和动作执行的方式工作,可以按照指定的模式来匹配输入文本,并执行相应的操作。 下面是一些 Awk 的常见用法: 1. 基本语法:`awk 'pattern { action }' file`,其中 pattern 是用来匹配输入行的模式,action 是在匹配成功时执行的操作,file 是要处理的输入文件名。 2. 默认情况下,Awk 会将输入行按照空格或制表符进行分割,并将分割后的字段存储在预定义的变量 `$1`, `$2`, `$3` 等中。 3. 输出字段:使用 `print` 命令来输出字段。例如,`print $1` 将输出第一个字段,`print $2, $3` 将输出第二和第三个字段。 4. 指定字段分隔符:可以使用 `-F` 参数来指定字段分隔符。例如,`awk -F ',' '{ print $1 }' file` 将以逗号为分隔符输出第一个字段。 5. 条件匹配:Awk 可以根据条件来进行行的匹配和操作。例如,`awk '$1 > 10 { print $0 }' file` 将输出第一个字段大于 10 的行。 6. 内置变量:Awk 提供了许多内置变量,如 `NR`(当前行号),`NF`(当前行的字段数量),`FS`(字段分隔符)等,可以在操作中使用。 7. 正则表达式匹配:Awk 支持正则表达式匹配。例如,`awk '/pattern/ { print $0 }' file` 将输出匹配到 pattern 的行。 8. 循环和条件语句:Awk 支持循环和条件语句,可以根据需要在操作中使用。 以上是 Awk 的一些常见用法,你可以根据具体需求来灵活运用。如果你需要更详细的用法示例,请参考 Awk 的官方文档或其他相关资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值