0

構造体を初期化する入力に数行あります。入力ファイルに次のような行が表示されるたびに:

something1 = (struct something2){ something3, something4};

私はそれを次のように変換する必要があります:

init_something2( &something1, something3, something4);

次の関数を使用しましたが、動作します。

sed -e 's/\([a-zA-Z0-9]*\)\s*=\s*(\s*struct\s\([a-zA-Z0-9]*\)\s*)\s*{\s*\([a-zA-Z0-9]*\)\s*,\s*\([a-zA-Z0-9]*\)\s*}\s*;/init_\2( \&\1, \3, \4);/g'

私の質問は、どのように変更して、多くの入力に対して機能するようにするかです。任意の数の入力を行うように変更できますか。たとえば、次のようにします。

something = ( struct something2) {something3, something4, something5, something6..};

なるべき

init_something2( &something1, something3, something4, something5, something6..);

(括弧と中括弧に注意してください)どうもありがとう!

4

1 に答える 1

1

もちろん。([^}]*)}ブレースの前のすべてをキャプチャするために使用するだけです。

sed -e 's/\([a-zA-Z0-9]*\)\s*=\s*(\s*struct\s\([a-zA-Z0-9]*\)\s*)\s*{\([^}]*\)}\s*;/init_\2( \&\1, \3);/g'
于 2012-09-23T00:48:12.270 に答える