Il contenuto del mio filenamefile è il seguente (ad esempio):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Voglio sostituire il blocco di linee tra STARTe ENDcon una sola parola, ad esempio con SINGLEWORD. Come sotto:
My block of line starts from here
SINGLEWORD
and end to here for example.
Posso trovare il mio blocco di linee usando questo comando:
grep -Pzo "START(.|\n)*END" filename
E il risultato dell'esecuzione sopra il comando sarà così:
START
First line
second line
third line
END
Quindi ho usato questo comando per combinare tutte le linee in un'unica linea:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Quindi otterrò questo risultato:
START First line second line third line END
E con il mio ultimo comando LAST_RESULTS | sed 's/.*/SINGLEWORD/'li cambio in "SINGLEWORD"e ottengo questo risultato.
SINGLEWORD
Ora quello che voglio è: come posso usare questo comando (o il tuo suggerimento) e sostituire (sul posto) il mio blocco di linee con la parola "SINGLEWORD"? E il risultato finale sarà come questo file:
My block of line starts from here
SINGLEWORD
and end to here for example.
seddovrebbe essere possibile ma probabilmente più difficile da leggere (guarda questa domanda )