awk是Linux/Unix系统中强大的文本处理工具,特别适合处理结构化文本数据。本文将详细介绍如何使用awk命令输出文本中的特定字段和列。
awk的基本命令格式为:
awk 'pattern {action}' filename
awk默认以空格或制表符作为字段分隔符,$1表示第一个字段,$2表示第二个字段,以此类推:
# 输出第一列
awk '{print $1}' filename
# 输出第一和第三列
awk '{print $1,$3}' filename
# 输出最后一列
awk '{print $NF}' filename
使用-F选项指定分隔符:
# 以逗号为分隔符
awk -F',' '{print $1}' filename
# 以冒号为分隔符
awk -F':' '{print $1,$3}' filename
对于固定宽度的文本,可以使用substr函数:
# 输出第5-10个字符
awk '{print substr($0,5,6)}' filename
# 输出时添加自定义分隔符
awk '{print $1 "|" $3}' filename
# 格式化输出
awk '{printf "%-10s %5d\n", $1, $3}' filename
# 输出行号
awk '{print NR, $0}' filename
处理/etc/passwd文件:
# 输出用户名和登录shell
awk -F':' '{print $1,$7}' /etc/passwd
# 统计文件行数
awk 'END{print NR}' filename
通过掌握这些awk技巧,您可以高效地处理各种文本数据提取需求。