如何使用空格

时间:2015-10-01 11:46:06

标签: sed makefile

我是这个论坛的新手,这是我的第一个问题,希望我不是重复的东西。

我需要在C文件中替换以下字符串,并且我为此目的使用了Sed。

输入:

#define  N_MAX_ITEMS 20 // some comment 
#define  N_TOTAL_COUNT    10

预期产出:

N_MAX_ITEMS = 20
N_TOTAL_COUNT = 10

输入可以有多个或单个空格或标签。

我在MAKEfile中使用以下sed命令,在Cygwin环境中执行。

macros_$(HW_TYPE).ini: macros_temp.h    
 rm -f $@
 sed -e "s/\(#define[ \t]*\) \(N_.*\) \([\s\t]*[A-Z0-9_(].*\)/\2=\3/" <$^ >>$@

但输出不正确,特别是对于附加了注释的表达式。

一般的想法是,我的sed应该能够选择不同的单词,直到遇到第一个空格或标签。

1 个答案:

答案 0 :(得分:0)

这可能适合你(GNU sed):

sed -r 's/^#define\s+(\S+)\s+(\S+).*/\1 = \2/' file

将元字符\s\S用于空白和非空白,并将+元字符用于一个或多个。