当前位置:首页 > linux > 正文

linux awk命令详解

  • linux
  • 2024-04-18 19:26:58
  • 8919

语法
awk 'script' [input-file] [output-file]
选项
-f script-file: 从指定文件中读取 awk 脚本。
-F field-separator: 设置字段分隔符。
-v var=value: 设置变量。
脚本结构
awk 脚本由模式和动作组成:
模式: 指定要匹配的行。
动作: 在匹配的行上执行的操作。
模式
BEGIN: 在处理任何输入行之前执行。
END: 在处理所有输入行之后执行。
/regexp/: 匹配正则表达式 regexp 的行。
relop expre ssion: 比较表达式 expre ssion 并根据结果执行动作。
动作
print [expre ssion-list]: 打印表达式列表。
printf format-string, [expre ssion-list]: 使用指定的格式字符串打印表达式列表。
exit [exit-status]: 退出 awk 脚本。
next: 跳到下一个模式。
变量
awk 预定义了以下变量:
FNR: 当前记录号。
NR: 输入文件的记录号。
NF: 当前行中的字段数。
FILENAME: 当前输入文件的名称。
OFS: 输出字段分隔符。
ORS: 输出记录分隔符。
示例
awk -F: '{print $1, $2}' input.txt
此脚本将 input.txt 文件中的行分割为冒号分隔的字段,并打印第一个和第二个字段。
进阶功能
数组: awk 支持关联和非关联数组。
函数: awk 内置了函数和支持用户定义函数。
流程控制: awk 支持条件语句 (if/else) 和循环语句 (for/while)。
管道: awk 可通过管道处理来自其他命令的输出。
优点
强大而灵活的数据处理语言。
适用于处理大型文本文件。
易于学习和使用。
缺点
对复杂任务的处理效率可能不如其他编程语言。
缺少图形用户界面 (GUI) 支持。