我在一个文件中有如下文本:
#include<stdio.h>
#include<stdlib.h>
#define MIN 0
#define MAX 100
我想在第一个 #define 之前插入一个宏,例如:
#include<stdio.h>
#include<stdlib.h>
#define MAXIMUM(a,b) \
(a>b?(return a):(return b))
#define MIN 0
#define MAX 100
我用 sed 试试运气,但没有那么成功。我必须在 bash 脚本中执行此操作,比如 add_macro.sh,它的执行方式为:
./add_macro file.c
并包含:
var1="#define"
var2="#define MAXIMUM(a,b) \ /\n(a>b?(return a):(return b))"
sed "H;${x;s/$var1 .*\n/$var2&/;p;}" $1 > $1.tmp
当我运行上述脚本时,它会执行以下操作:
#include<stdio.h>
#include<stdlib.h>
#define MIN 0
#define MAX 100
#include<stdio.h>
#include<stdlib.h>
#define MAXIMUM(a,b) //no '\' is printed
(a>b?(return a):(return b))
#define MIN 0
#define MAX 100
它重复数据并且只替换一次。任何帮助将不胜感激。