主题
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) daemonbash
# 同时看行号与列数,输出分隔符改成 |
awk -F ':' 'BEGIN{OFS="|"} {print NR, NF, $1}' demo.txttext
1|7|root
2|7|daemon运行环境:Linux / MSYS2 的 gawk 通用写法;BSD/macOS 的 awk 部分扩展语法不同,长脚本建议用 gawk。