
次の構造のファイルがあります。
M: a
M: b
Player: c
M: d
Sequencer.Play( SpineAnimation(foo, speaker)@0 )
Player: e
M: f
Sequencer.Play( SpineAnimation(bar, speaker)@0 )
...
次のファイルにどのように変換できますか?
M: a
M: b
Player: c
M foo: d
Player: e
M bar: f
...
つまり、次の行にコロンがある場合は、Sequencer.Play( SpineAnimation(...
現在の行のコロンの前にその後に単語を入れたいと思います。
どのツールが一番良いのかわからないので、awkを考えていますが、また使用するのは非常に面倒です。これを行うには、どのコマンドでも使用する意向があります。私はここへの答えに似たものを試しました。2行を1つにマージし、2行から選択した単語を選択します。Sequencer.Play
しかし、この線が常に存在するわけではないので、この問題は非常に異なるようです。
答え1
sed を使用して、次のことを試すことができます。
$ sed -e 'N;s/M:\(.*\)\nSequencer.Play( SpineAnimation(\([^,]*\).*/M \2:\1/' -e 'P;D' file
M: a
M: b
Player: c
M foo: d
Player: e
M bar: f
N
...コマンドはP;D
パターンスペースに2行のバッファを保持し、コマンドは2行のパターンと一致してs
改行文字の間の部分とそれ以降の部分をキャプチャします。M
SpineAnimation(
,
M