我想制作一个宏替换换行符。
我的第一个尝试是:
define(`m4_pascal_str',`
patsubst(`$1',`^\(.*\)$',`\1++')
')
m4_pascal_str(`
11
22 33 44
')
define(zz,`
11
22 33 44
')
m4_pascal_str(`zz')
这不使用中间宏时,否则只匹配最后换行符给出正确的答案。 请参见下面的结果:
++
++
11++
++
22 33 44++
++
11
22 33 44
++
然后我发现类似的问题: 在M4的patsubst,我怎么用空格代替换行?
所以,我只是做:
define(`m4_pascal_str',`
patsubst(`$1',`
',`++')
')
m4_pascal_str(`
11
22 33 44
')
define(zz,`
11
22 33 44
')
m4_pascal_str(`zz')
它给:
++++11++++22 33 44++
11
22 33 44
最后一个选择受到了同样的问题。 有什么建议么?