当前位置: 技术问答>linux和unix
命令求解:去掉#define语句中的sizeof()
来源: 互联网 发布时间:2017-01-09
本文导语: 我有一个含子目录的目录,里面很多头文件.h,现在要把每个头文件中的所有#define语句中出现的sizeof去掉。 如下例子,文件fruit.h中 #define APPLE sizeof(red) #define (Orange) sizeof(org) #define banana (sizeof(yellow)) 经过处...
我有一个含子目录的目录,里面很多头文件.h,现在要把每个头文件中的所有#define语句中出现的sizeof去掉。
如下例子,文件fruit.h中
#define APPLE sizeof(red)
#define (Orange) sizeof(org)
#define banana (sizeof(yellow))
经过处理后的fruit.h应该为:
#define APPLE red
#define (Orange) org
#define banana (yellow)
特别需要注意的是后括号的去除,这是必须的。
现学现用sed命令没能想出来。
求高手赐教,加上注释和思路更完美。
如下例子,文件fruit.h中
#define APPLE sizeof(red)
#define (Orange) sizeof(org)
#define banana (sizeof(yellow))
经过处理后的fruit.h应该为:
#define APPLE red
#define (Orange) org
#define banana (yellow)
特别需要注意的是后括号的去除,这是必须的。
现学现用sed命令没能想出来。
求高手赐教,加上注释和思路更完美。
|
没有去掉sizeof后面的括号,但效果是一样的,多一个括号不影响编译
#! /bin/sh
for i in *.h; do
sed -i 's/sizeof//g' $i
done
|
cat def.txt | sed -r 's/^(#define.*)sizeof((.*))/12/'
|
$ sed 's/^(#define.*)sizeof((.*))$/12/' file
#define APPLE red
#define (Orange) org
#define banana (yellow)
|
它本身支持通配符
sed -i 's/sizeof//g' *.sh