You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改awk查找结果显示格式 输出带行号的竖线分隔内容

实现awk输出带匹配行号的结果

现有场景

当前data.csv文件内容示例:

0,H,"First Job"
0,M,"Second Job"
0,L,"Third Job"
...

现有搜索逻辑为执行./find.sh <关键词>,在文件第3列匹配对应关键词,原始find.sh脚本内容如下:

#!/bin/bash
awk -F"," -v findit="$1" '$3 ~ findit' data.csv

需求为修改输出格式,在每行匹配结果最前面标注对应内容所在的文件行号,目标输出格式示例:

3 | 0 | L | "Third Job"

示例开头的数字即为匹配结果所在的行号。

修改方案

直接使用awk内置的NR变量即可实现需求,该变量会自动记录当前处理行的行号(从1开始计数),只需要调整awk的打印规则,按要求拼接输出字段即可,修改后的find.sh内容如下:

#!/bin/bash
awk -F"," -v findit="$1" '$3 ~ findit {print NR " | " $1 " | " $2 " | " $3}' data.csv
  • 原有的第三列模糊匹配关键词的逻辑完全保留,不需要改动
  • NR为awk内置变量,无需额外编写计数逻辑即可自动获取当前行号
  • 打印语句按照行号 | 第一列 | 第二列 | 第三列的格式拼接,和要求的输出格式完全匹配

内容的提问来源于stack exchange,提问作者Ali Abdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:57:19