Il contenuto del mio filename
file è 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 START
e END
con 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.
sed
dovrebbe essere possibile ma probabilmente più difficile da leggere (guarda questa domanda )