sed -i 's,\(#define \s+ V2V_APP_VERSION \s*\)\(.*\),\1'"\"HAHA_TYPE\""',g' ./sc_test.h 增加\s+匹配任意空格为什么不行
时间: 2024-02-04 13:10:01 浏览: 101
sed-4.2.2-7.el7.x86_64.rpm
在sed命令中,正则表达式中的\s表示匹配任意空白字符,而+表示匹配前面的元素一次或多次。然而,在sed中,默认情况下,正则表达式是基于基本正则表达式(BRE)语法的,它不支持\s和+这样的特殊字符。
如果你想要在sed命令中使用\s+来匹配任意空格,可以考虑使用扩展正则表达式(ERE)语法。在ERE语法中,\s和+可以正常工作。
要在sed命令中使用ERE语法,可以使用-E选项或者--regexp-extended选项。所以你可以尝试以下命令:
sed -E -i 's,\(#define \s+ V2V_APP_VERSION \s*\)\(.*\),\1'"\"HAHA_TYPE\""',g' ./sc_test.h
或者
sed --regexp-extended -i 's,\(#define \s+ V2V_APP_VERSION \s*\)\(.*\),\1'"\"HAHA_TYPE\""',g' ./sc_test.h
这样就可以使用\s+来匹配任意空格了。
阅读全文