Gawk脚本使用示例
开始使用 Gawk
如果您使用的是最新的Linux版本,gawk应该默认已安装。您可以通过检查其版本来确认.
使用gawk有不同的方法。常见的功能如下:
- 格式化输出行
- 转换数据文件
- 逐行扫描文件
- 将输入行拆分为字段
- 生成格式化报告
- 排序数据
gawk的基本语法是:
gawk [POSIX / GNU style options] -f program_file [ -- ] file
gawk [POSIX / GNU style options] [ -- ] ‘program’ file ...要使用 gawk,可以使用 -f 选项指定脚本文件,或者直接在命令行中指定脚本。
使用 gawk 时有三个重要的选项需要注意:
1. -f 文件, –file=文件: 用于您想要使用 gawk 并从文件中读取命令时。该文件是脚本。
2. -v var=val, –assign=var=val: 在执行脚本之前需要为变量赋值时使用。
3. -F fs, –field-separator=fs: 预定义变量 FS 的值被用作输入字段的分隔符。
内置变量
Gawk提供了内置变量,例如:
FS: 用于分割文件时,包含字段分隔符字符。
RS: 包含当前字符分隔符。
OFS: 包含分隔输出字段的分隔符,用于分隔 AWK 打印的字段。
NF: 输入记录的字段数量存储在NF中。
ORS: 包含由AWK打印的输出行之间的输出字段分隔符。
NR: 包含输入行的总数。
在前面的例子中,我们使用 * 作为文件中输入行的分隔符。
Gawk的示例用法
1. -F
要对文本文件进行排序并打印前三个以冒号分隔的字段,请使用以下命令。请注意,我们在这里将passwd用作我们的文件:
gawk -F: ‘{print $1; print $2; print $3}’ /etc/passwd在这里,我们的分隔符是一个完整的冒号。由于我们想要前三个字段,您可以按照前面的例子指定它们。您可以进行调整,使用不同的分隔符和不同数量的字段。
2. -f
要从文件中指定 awk 程序源,请使用 -f 标志后跟文件名:
gawk -F: -f file1.txt /etc/passwd3. 打印文件内容
使用 gawk 处理文件会打印出文件中的所有数据行。
4. 与模式一起工作
您还可以使用 gawk 仅打印匹配给定模式的行。例如,要打印包含特定单词的行,在我们的例子中,这个单词是 kim,命令将是:
gawk ‘/kim/ {print}’ file-name
在这里,模式也可以是一个字符。例如,要打印所有包含冒号的行,命令如下图所示:
您还可以指定要打印的特定行。例如,要打印包含特定字符的行,例如大于 6 的字符,语法是:
gawk ‘length ($0) > 6’ file-name5. 将行拆分为字段
Gawk 默认情况下会在打印文件中的行时打印每个字段。然而,您可以指定要打印哪个字段。第一个字段存储在$1中,整行表示为$0. 默认情况下,除非您指定根据空格分隔字段,否则整个行都会被打印。
例如,要分隔行并仅打印每行的第二个字段,可以使用以下命令:
gawk ‘{print $2}’ file-name要添加行号,请添加NR变量。
新命令是:
gawk ‘{print NR, $2}’ file-name6. 获取行数
您可能需要获取大型文件的总行数,您可以使用以下语法实现:
gawk ‘END {print NR}’ file-name结论
在 Linux 中知道如何使用 gawk 是有趣且有帮助的,特别是在处理文本数据时。你可以使用不同的模式来提取和操作数据行。希望本文中涵盖的示例能为你提供一个良好的开端,并让你在不同的活动中使用 gawk 时大开眼界。









