sed/awk 表达式在前面添加文本并将递增的数字附加到列表

问题描述 投票:0回答:1

我想转换此列表:

DISPATCH_C
HELLO_C
INTERFACES_C
LIST_C

此列表:

#define LOG_FILE_DISPATCH_C         1
#define LOG_FILE_HELLO_C            2
#define LOG_FILE_INTERFACES_C       3
#define LOG_FILE_LIST_C             4

如何使用 sed 或 awk 执行此操作?我以为会是这样的

sed -En '/(.*)/#define LOG_FILE_\1   {=;p;}/'

但这只会给我一个错误。显然 sed 将“#define”解释为命令,我不知道如何解决这个问题。

awk sed
1个回答
0
投票

您可以使用这个

awk
解决方案:

awk '{printf "#define LOG_FILE_%-30s%d\n", $1, NR}' file

#define LOG_FILE_DISPATCH_C                    1
#define LOG_FILE_HELLO_C                       2
#define LOG_FILE_INTERFACES_C                  3
#define LOG_FILE_LIST_C                        4
© www.soinside.com 2019 - 2024. All rights reserved.