次のようなファイルにテキストがあります。
#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 で運を試してみましたが、それほど成功しませんでした。これは、次のように実行される add_macro.sh などの bash スクリプトで行う必要があります。
./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
データを繰り返し、置換を 1 回だけ行います。どんな助けでも大歓迎です。