2010-06-20 4 views
0

줄 바꿈을 대체하는 매크로를 만들려고합니다.GNU M4에서 줄 바꿈하는 방법 _properly_

내 첫 번째 시도였다 : 중간 매크로를 사용하고, 그 밖에는 마지막 개행과 일치하지 않을 때 정답을 제공

define(`m4_pascal_str',` 
    patsubst(`$1',`^\(.*\)$',`\1++') 
') 

m4_pascal_str(` 

11 

22 33 44 
') 

define(zz,` 

11 

22 33 44 
') 
m4_pascal_str(`zz') 

. 그래서, 난 그냥 만든 in m4's patsubst, how do I replace newlines with spaces?

:

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 

마지막 대안은 고통

++ 

++ 
11++ 
++ 
22 33 44++ 

++ 

11 

22 33 44 
++ 

가 그럼 난 비슷한 질문을 발견 : 아래 결과보기 같은 문제. 제안 사항이 있으십니까?

답변

1

마지막 줄에는 zz을 인용 부호로 제거하십시오. 이 작업을 수행 할 때 두 m4_pascal_str 호출에 대해 동일한 결과가 나타납니다.

 ++ 
++ 
11++ 
++ 
22 33 44++ 
++ 




    ++ 
++ 
11++ 
++ 
22 33 44++ 
++ 
관련 문제