linux中awk的使用

awk [选项] '模式 {动作}' 文件
参数解释:
选项:例如 -F 用于指定字段分隔符。
模式:可以是正则表达式、条件表达式等,用于筛选符合条件的行。
动作:是对匹配到的行执行的操作,通常包含打印、计算等命令。
文件:指定要处理的文本文件,如果不指定,则从标准输入读取数据。
常见用法及示例
(一)打印指定列
默认情况下,awk 使用空格或制表符作为字段分隔符,使用 $n 来引用第 n 个字段($1 表示第一个字段,$0 表示整行)。
bash# 示例文件 data.txt 内容如下
apple 10 2.5
banana 20 3.0
cherry 15 2.0
# 打印每行的第一个字段
awk '{print $1}' data.txt
输出结果:
apple
banana
cherry
(二)指定字段分隔符
使用 -F 选项可以指定不同的字段分隔符。
bash# 示例文件 data.csv 内容如下
apple,10,2.5
banana,20,3.0
cherry,15,2.0
# 指定逗号为分隔符,打印每行的第二个字段
awk -F ',' '{print $2}' data.csv
输出结果:
10
20
15
(三)条件筛选
可以使用条件表达式来筛选符合条件的行。
bash# 筛选出第二个字段大于 15 的行,并打印整行
awk '$2 > 15 {print $0}' data.txt
输出结果:
banana 20 3.0
(四)正则表达式匹配
使用正则表达式来匹配包含特定字符串的行。
bash# 打印包含 "banana" 的行
awk '/banana/ {print $0}' data.txt
输出结果:
banana 20 3.0
(五)内置变量
awk 有许多内置变量,如 NR(记录编号,即行号)、NF(字段数量)等。
bash# 打印每行的行号和字段数量
awk '{print "Line " NR ": " NF " fields"}' data.txt
输出结果:
Line 1: 3 fields
Line 2: 3 fields
Line 3: 3 fields
(六)计算和累加
可以在 awk 中进行计算和累加操作。
bash# 计算第二个字段的总和
awk '{sum += $2} END {print "Total: " sum}' data.txt
输出结果:
Total: 45
在这个例子中,sum += $2 用于累加每行的第二个字段的值,END 块在处理完所有行后执行,用于打印最终的总和。

注意:

1.使用单引号

2.awk后结的顺序不可以乱

3.第五点中内置变量,若引入除NR和NF,其他的需要用双引号

4.print一定在{}内

5.在 Linux 中使用 awk 计算含有 "mc" 的行数,可利用正则表达式匹配包含 "mc" 的行,再通过内置变量进行计数。以下为详细说明和示例:

awk '/mc/ {count++} END {print count}' example.txt
  • /mc/:这是一个正则表达式,用于匹配包含 "mc" 的行。只要某行包含 "mc",就会触发后续动作。
  • {count++}:当匹配到包含 "mc" 的行时,执行此动作,将变量 count 的值加 1。一行中有两个mc时,也只会加1。
  • END:这是 awk 的一个特殊模式,代表在处理完所有输入行后执行相应动作。
  • {print count}:在 END 块中,打印计数器 count 的最终值,也就是包含 "mc" 的行数。

 

当然也可以配合输出重定向相机使用,如cat aaa.tcl | awk '{print $3}' | sort -u使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值