linux awk应用详解
发布日期:2025-04-05 21:18:33 浏览次数:5 分类:精选文章

本文共 1788 字,大约阅读时间需要 5 分钟。

AWK脚本实用技巧合集


1. 文件操作

使用AWK对文件进行操作时,可以通过简单的模式来实现筛选。例如:

awk '/101/,/105/' file

该命令会显示文件中从包含101到包含105的所有行。另外,也可以通过比较特定字段的值来筛选。例如:

awk '$1 == 5' fileawk '$1 == "CT"' file # 注意必须带双引号awk '$1 == "oracle" && $1 == "simon"' file

2. 显示文件信息

想了解文件的当前记录号(FNR)、域数(NF)以及每一行的前几个字段?可以使用以下命令:

awk '{print NR, NF, $1, $NF}' file

输出会显示文件的当前记录号、域数以及第一行和最后一行的字段。


3. 文件分隔符设置

默认情况下,AWK使用空格和TAB来分隔字段,但你可以根据需要更改分隔符。例如:

awk -F "|" '{print $1}' file

此命令会使用竖线(|)作为分隔符。

如果需要更复杂的分隔符,可以使用正则表达式:

awk -F '[ : \t|]' '{print $1}' file# 以上命令会将空格、冒号、竖线以及TAB都作为分隔符

4. 条件判断与数据处理

你可以在AWK脚本中使用条件判断对数据进行过滤。例如:

awk '$1 * $2 > 100' file

上述命令会找到第一个和第二个字段的乘积大于100的记录。

如果需要对多个字段进行判断,可以使用逻辑运算符。例如:

awk '$2 > 5 && $2 <= 15' file

5. 自定义输出格式

AWK可以根据需求自定义输出格式。例如:

awk 'BEGIN { OFS="%"; } { print $1, $2 }' file

上述命令会将输出字段间隔设置为百分号。

如果需要在多个文件中查找相同内容,也可以通过输入管道符(|)来实现。例如:

df | awk '$4 > 1000000'

6. 递增计数器

如果需要统计文件中某些字段的出现次数,可以使用递增计数器。例如:

awk '/tom/ { count++; } END { print "tom was found " count " times" }' file

上述命令会统计文件中“tom”这个词的出现次数,并在处理完所有记录后输出结果。


7. 字段替换与计算

你可以在AWK脚本中对特定字段进行替换或计算。例如:

awk '{$3 = $3 + 10; print $3}' file

上述命令会将第三个字段增加10,然后输出结果。

如果需要对多个字段进行计算,可以将逻辑语句放在一个复合命令中:

awk '{$1 += $2; $3 *= $4; print $1, $3}' file

8. 高级命令

如果你需要处理更复杂的逻辑,可以使用AWK的BEGINENDDB‹—›等高级功能。例如:

awk 'DB‹—›( awk '{print $1 * $2}' file, awk '{print $1}' file )'

该命令会将两个文件进行数据合并,并计算对应字段的乘积。

如果需要自定义输出格式,你可以在BEGINEND区块中添加格式化代码:

awk 'BEGIN { print "输出标题:" } { print $1, $2 } END { print "输出结束:" }' file

9. 杂用命令

以下是一些常用的AWK命令语法示例:

  • 将多个文件合并:
    awk '$1 != previous { close(previous); previous=$1 } { print substr($0, index($0," ") + 1) > $1 }' file1 file2 file3 > fileall
  • 交互式输入:
    awk 'BEGIN { system("echo \"输入你的名字:\""); getline d; print "你的名字是:" d }
  • 文件批处理:
    cat awkfile | awk '{ print $1, $2 }'

通过这些AWK命令,你可以快速实现文件处理、数据筛选和输出格式化等任务。如果需要更复杂的逻辑,建议结合条件判断循环递增计数器等功能来完成。

上一篇:linux bash shell 特殊字符大全
下一篇:linux awk命令详解2

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月15日 12时58分00秒