Eu tenho um monte de arquivos LilyPond no seguinte formato:
\score {
\new StaffGroup = "" \with {
instrumentName = \markup { \bold \huge \larger "1." }
}
<<
\new Staff = "celloI" \with { midiInstrument = #"cello" }
\relative c {
\clef bass
\key c \major
\time 3/4
\tuplet 3/2 4 {
c8(\downbow\f b c e g e)
} c'4 | %01
\tuplet 3/2 4 {c,8( b c e f a) } c4 | %02
\tuplet 3/2 4 { g,8( d' f g f d) } b'4 | %03
}
>>
\layout {}
\midi {}
}
Como alguém extrairia o \relative c {...}
bloco em um novo arquivo, então ficaria assim:
\relative c {
\clef bass
\key c \major
\time 3/4
\tuplet 3/2 4 {
c8(\downbow\f b c e g e)
} c'4 | %01
\tuplet 3/2 4 {c,8( b c e f a) } c4 | %02
\tuplet 3/2 4 { g,8( d' f g f d) } b'4 | %03
}
Uma correção do recuo não é necessariamente necessária neste caso. Isso seria uma tarefa awk
ou ? csplit
Como seria?
Você pode querer pensar sobre o que fazer com a saída, como usar o nome da entrada com uma extensão para a saída. Modificar o recuo não deve ser difícil.
Esse script lista qualquer número de arquivos nomeados na linha de comando e qualquer número desses blocos em um arquivo.
Esta é a saída da sua amostra:
Este é o roteiro.