Ora ho un semplice file su cui voglio sedermi:
~ cat sample
##tag##
xxxxxxx
xxxxxxx
##tag##
Quello che mi aspetto è rimuovere la riga ## tag ## sulla coppia e lasciare da sola la parte centrale. Posso farlo (eccetto che c'è una riga vuota in fondo):
~ sed -r "N;N;N; s/##tag##n((.*n)*)##tag##/1/" sample
xxxxxxx
xxxxxxx
Ma la tag line non è sempre così pulita come voglio, c'è un altro file:
~ cat sample2
##tag###dklxjexx
xxxxxxx
xxxxxxx
asdf##tag###xosy
So che hai capito il mio punto, voglio ancora rimuovere il tag line:
~ sed -r "N;N;N; s/##tag.*n((.*n)*).*tag##/1/" sample2
Ma non ho stampato niente! Come mai??
Sono davvero impaziente di questo q, grazie per il tuo tempo e perdona il mio povero inglese :)
inserisci la descrizione dell'immagine qui
così è .
fiammiferi n
? Com'è arrivata l'img?
risposte:
1 per risposta № 1Prova a usare [^n]*
invece di .*
:
sed -r "N;N;N; s/[^n]*##tag[^n]*n(.*)n[^n]*tag##.*/1/" sample2
Inoltre, è necessario tenere conto di caratteri aggiuntivi prima / dopo il "###tag##"
pennarello.
0 per risposta № 2
Questo potrebbe funzionare per te (GNU sed):
sed "/##tag##/,//{//d}" file
Per mantenere anche i dettagli sulle linee di tag, usa:
sed "/##tag##/,//{s///}" file