跳转到内容

awk ​

按「行 + 列」处理文本:逐行读取,用分隔符切分成域,再对域做计算或输出。

内置变量 ​

bash
ARGC               # 命令行参数个数
ARGV               # 命令行参数排列
ENVIRON            # 支持队列中系统环境变量的使用
FILENAME           # awk 浏览的文件名
FNR                # 浏览文件的记录数(当前文件内)
FS                 # 设置输入域分隔符,等价于命令行 -F 选项
NF                 # 浏览记录的域的个数(当前行的列数)
NR                 # 已读的记录数(跨文件累计)
OFS                # 输出域分隔符
ORS                # 输出记录分隔符
RS                 # 控制记录分隔符
$0                 # 整条记录;$1、$2 分别是第 1、2 个域

示例 ​

bash
# 按 : 切列,带序号打印第一列
awk -F ':' '{print NR ") " $1}' demo.txt

输出(实测,GNU Awk 5.3.2 / MSYS2):

text
1) root
2) daemon
bash
# 同时看行号与列数,输出分隔符改成 |
awk -F ':' 'BEGIN{OFS="|"} {print NR, NF, $1}' demo.txt
text
1|7|root
2|7|daemon

运行环境:Linux / MSYS2 的 gawk 通用写法;BSD/macOS 的 awk 部分扩展语法不同,长脚本建议用 gawk。

基于 MIT 许可发布