当前位置:首页>Linux>Linux 文本三剑客之 awk 实战手册(后端工程师版)

Linux 文本三剑客之 awk 实战手册(后端工程师版)

  • 2026-09-03 21:24:44
Linux 文本三剑客之 awk 实战手册(后端工程师版)

上期给大家完整拆解了grep筛选命令,没看过的朋友可以翻一翻往期干货~

今天咱们主攻awk。后端日常解析时序报告、网表、日志文件,想要快速筛选、抓取指定列信息,全靠 awk。默认空格分隔、搭配管道命令使用,上手简单、效率拉满,是后端工程师必备的文本处理神器。

awk 核心用途:抓取文本中指定列信息,默认以空格/空白符作为分隔符,常和 grep 、sed 等命令组合,快速筛选、提取目标数据。

一、后端经典实战案例

日常分析时序报告最常用组合命令:

grep "Startpoint" rpt | awk '{print $3}' | sort -u > reg2reg_startpoint.lst

命令详解:

1、grep "Startpoint" rpt:筛选 rpt 报告中所有包含 Startpoint 的行;

2、awk '{print $3}':提取筛选后每一行的第三列内容;

3、sort -u :排序去重

4、> reg2reg_startpoint.lst:将抓取到的所有数据,输出保存到指定文件,方便后续复盘统计。

二、awk 标准通用语法

固定格式(日常基本都用单引号,为行业通用规范)

awk [option] 'pattern{action}' file > file2

•option:可选参数(如指定分隔符)

•pattern:匹配条件/筛选规则

•action:匹配成功后执行的动作(打印、输出等)

三、awk 核心内置变量(必记)

这几个变量是后端处理报告、日志最高频用法,建议直接熟记:

•$0:输出当前整行所有内容

•$1、$2、$3...:第一列、第二列、第三列,列数从 1 开始计数

•$NF:当前行最后一列

•$(NF-1):倒数第二列

•$(NF-2):倒数第三列,以此类推

•NF:打印当前行的总列数

•NR:打印当前读取的行号

四、基础高频实操命令

1、打印文件整行内容

awk '{print $0}' file

2、打印多列内容(区分拼接/空格分隔)

两列无缝拼接(无空格):

awk '{print $1$2}' file

示例:第一列为 a、第二列为 b,输出结果为 ab

两列空格分隔(规范常用):

awk '{print $1,$2}' file

示例:第一列为 a、第二列为 b,输出结果为 a b

3、自定义拼接文字(DIY 输出格式)

可自行添加注释、标识文字,双引号包裹自定义字符,逗号分隔变量:

awk '{print "模块名称:", $1}' file

4、手动指定分隔符(-F)

默认按空格分隔,遇到斜杠、逗号、冒号等分隔的文本,用-F指定分隔符:

awk -F '/' '{print $1}' file

释义:以/作为分隔符,只提取第一列内容。

五、进阶筛选用法(时序报告分析必备)

支持常规关系运算:==、!=、>=、<=、>、<,先判断条件,再执行输出动作。

1、按列数筛选输出

只匹配「恰好5列」的行,输出该行第一列:

awk 'NF==5 {print $1}' file

2、按行号范围筛选

只打印第 3~6 行的所有内容:

awk 'NR>=3 && NR<=6 {print $0}' file

3、正则区间匹配(批量截取段落)

从第一次匹配「正则1」的行开始,到第一次匹配「正则2」的行结束,区间内所有行全部输出:

awk '/正则1/,/正则2/ {print $0}' file

六、文末小结

以上所有用法,都是后端日常处理 timing 报告、日志、网表文件的最高频操作。

建议大家收藏笔记、熟练掌握,后续批量提取寄存器、端口、时序路径数据,不用反复查文档,大幅提升工作效率。

后续持续更新 sed 命令、TCL 脚本、PNR 实战干货,专注后端工程师成长,关注不迷路!

最新文章

随机文章