我有一个文件里的文本是这样的:
#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
它只重复数据并进行一次替换。非常感谢您的帮助。
//
注释,但对于/*
注释,我不知道 :) - perreal