다음과 같은 구조의 파일이 있습니다.
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를 생각하고 있지만 또 사용하기가 매우 번거로울 것 같습니다. 이 작업을 수행하기 위해 어떤 명령이든 사용할 의향이 있습니다. 나는 여기에 대한 답변과 비슷한 것을 시도했습니다.두 줄을 하나로 병합하고 두 줄에서 선택한 단어를 선택하세요.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