awk
是一个强大的文本处理工具,它以行为单位处理文本文件,并允许您执行各种操作,如搜索、替换、计算和格式化文本数据。
awk
命令的基本语法结构如下:
awk 'BEGIN { initialization } pattern { action } END { finalization }' file
BEGIN
块:用于执行初始化操作,通常在处理文本之前执行,可选。pattern
:是一个条件模式,用于选择要处理的行,可选。action
:是要对满足条件模式的行执行的操作。END
块:用于执行最终的操作,通常在处理文本之后执行,可选。file
:要处理的文本文件的名称。awk
提供了许多内置变量,这些变量可用于在脚本中引用当前行的各个部分,以及其他信息。以下是一些常见的内置变量:
$0
:当前行的完整文本。$1
, $2
, $3
, ...:当前行的第一个、第二个、第三个字段,依此类推,字段由分隔符(默认为空格)分隔。NR
:当前行的行号。NF
:当前行的字段数。FS
:字段分隔符(默认为空格)。OFS
:输出字段分隔符(默认为空格)。RS
:记录分隔符(默认为换行符)。ORS
:输出记录分隔符(默认为换行符)。awk
还提供了一些内置函数,这些函数用于执行各种操作,如数学计算、字符串操作等。以下是一些常见的内置函数:
length(s)
:返回字符串 s
的长度。substr(s, m, n)
:返回字符串 s
从位置 m
开始的前 n
个字符。index(s, t)
:返回字符串 s
中子字符串 t
的第一次出现的位置。split(s, a, sep)
:将字符串 s
按分隔符 sep
分割成数组 a
。int(x)
:返回 x
的整数部分。sqrt(x)
:返回 x
的平方根。rand()
:返回一个 [0, 1) 范围内的随机数。getline
:从文件中读取下一行。awk '{ print }' file.txt
awk '{ print $1 }' file.txt
awk '/pattern/ { print }' file.txt
awk '{ sum += $1 } END { print sum }' file.txt
awk -F ',' '{ print $2 }' data.csv
awk 'END { print NR }' file.txt
awk '{ gsub("old", "new"); print }' file.txt
awk '$3 > 50 { print $1, $2 }' data.txt
awk '{ total += $1 } END { print "Total: " total }' file.txt
awk 'NR >= 5 && NR <= 10 { print }' file.txt
这些示例只是 awk
的一部分功能,您可以根据实际需求编写更复杂的 awk
脚本。 awk
的强大之处在于它的灵活性,可以用来处理各种文本数据处理任务。