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
功能的一部分,你可以根据自己的需求编写更复杂的脚本来实现更高级的功能。