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

如何用sed/awk为列表添加前缀文本并追加递增序号?

用sed或awk实现文本转换的解决方案

错误原因分析

你写的sed命令语法错误,sed的替换操作必须通过s/匹配规则/替换内容/格式实现,你未使用s命令,直接将#define写在匹配模式后,导致sed误将其识别为命令,从而报错。

方法一:使用awk实现(简洁直观)

awk自带行号变量NR,可直接利用它生成序号,同时通过printf控制输出格式实现对齐:

awk '{printf "#define LOG_FILE_%s\t\t%d\n", $0, NR}' input.txt

如果需要和示例完全一致的对齐效果,可指定字段宽度精准控制:

awk '{printf "#define LOG_FILE_%15s %d\n", $0, NR}'
  • $0代表当前行的全部内容
  • NR代表当前处理的行号(从1开始自动递增)
  • 调整%15s中的数字,可控制宏名称部分的宽度,确保序号对齐

方法二:使用sed实现

sed需要结合内容替换和行号输出两步完成:

sed 's/^/#define LOG_FILE_/' input.txt | sed '=' | sed 'N;s/\n/         /'

分步解释:

  1. 第一个sed命令:给每行开头添加#define LOG_FILE_前缀
  2. 第二个sed '=':在每行内容下方输出对应的行号
  3. 第三个sed命令:将行号与上一行内容合并,把换行符替换为足够空格实现对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:24:54