如何使用空格在sed中定义拆分模式
我是新来这个论坛的,这是我的第一个问题,希望我没有重复的东西 我需要替换C文件中的以下字符串,为此我正在使用Sed 输入:如何使用空格在sed中定义拆分模式,sed,makefile,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).in
#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/" <$^ >>$@
macros\uu$(HW\u类型).ini:macros\u temp.h
rm-f$@
sed-e“s/\(#define[\t]*\)\(N.*\)\([\s\t]*[A-Z0-9(].*\)/\2=\3/”>$@
但是输出不正确,特别是对于附加了注释的表达式
一般的想法是,在遇到第一个空格或制表符之前,我的sed应该能够选择不同的单词。这可能适合您(GNU sed):
将元字符\s
和\s
用于空格和非空格,将+
元字符用于一个或多个空格
sed -r 's/^#define\s+(\S+)\s+(\S+).*/\1 = \2/' file