我想转换此列表:
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
解决方案:
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