
本文共 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的BEGIN
、END
、DB‹—›
等高级功能。例如:
awk 'DB‹—›( awk '{print $1 * $2}' file, awk '{print $1}' file )'
该命令会将两个文件进行数据合并,并计算对应字段的乘积。
如果需要自定义输出格式,你可以在BEGIN
和END
区块中添加格式化代码:
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命令,你可以快速实现文件处理、数据筛选和输出格式化等任务。如果需要更复杂的逻辑,建议结合条件判断
、循环
和递增计数器
等功能来完成。
发表评论
最新留言
关于作者
