awk语法及丰富案例

awk 是一种强大的文本处理工具,广泛用于处理结构化文本数据

awk 基本语法

awk 命令的基本语法如下:

awk 'pattern { action }' file
  • pattern:用于匹配输入记录的模式。
  • action:当记录匹配模式时执行的操作。
  • file:输入文件。

如果省略 pattern,则默认匹配所有记录。如果省略 action,则默认操作是打印匹配的记录。

awk 脚本结构

awk 脚本由一系列模式和操作组成,可以包含变量声明、条件语句、循环等。一个简单的 awk 脚本示例如下:

#!/usr/bin/awk -f

BEGIN {
    print "Start of script"
}

{
    print "Processing line: " $0
}

END {
    print "End of script"
}
  • BEGIN 块:在处理输入文件之前执行。
  • {} 块:对每一行输入执行操作。
  • END 块:在处理完所有输入行之后执行。

丰富案例

案例 1:统计文件行数
awk 'END { print NR }' file.txt

这个命令将输出 file.txt 文件的总行数。NR 是一个内置变量,表示已处理的记录数。

案例 2:打印特定列
awk '{ print $2 }' file.txt

这个命令将打印 file.txt 文件的第二列。默认情况下,awk 使用空格作为字段分隔符。

案例 3:使用自定义字段分隔符
awk -F, '{ print $1 }' file.csv

这个命令将使用逗号作为字段分隔符,并打印 file.csv 文件的第一列。

案例 4:条件过滤
awk '$3 > 10 { print $0 }' file.txt

这个命令将打印 file.txt 文件中第三列值大于 10 的行。

案例 5:使用变量和算术运算
awk '{ total += $1; count++ } END { print total/count }' file.txt

这个命令将计算 file.txt 文件第一列的平均值。

案例 6:字符串处理
awk '{ print toupper($1) }' file.txt

这个命令将打印 file.txt 文件第一列的大写形式。toupper() 是一个内置函数,用于将字符串转换为大写。

案例 7:数组操作
awk '{ count[$1]++ } END { for (word in count) print word, count[word] }' file.txt

这个命令将统计 file.txt 文件中每个唯一单词的出现次数。

总结

awk 是一种功能强大的文本处理工具,可以用于处理各种结构化的文本数据。通过编写简单的脚本,你可以轻松地实现复杂的文本处理任务。以上案例只是 awk 功能的一部分,你可以根据自己的需求编写更复杂的脚本来实现更高级的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值