1

改行を置き換えるマクロを作成しようとしています。

私の最初の試みは:

    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

最後の選択肢も同じ問題を抱えています。助言がありますか?

4

1 に答える 1

2

最後の行については、zzの周りの引用符を削除してみてください。これを実行すると、両方のm4_pascal_str呼び出しで同じ結果が得られました。

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




     ++
++
11++
++
22 33 44++
++
于 2010-08-03T06:47:50.167 に答える