buongiorno ed eccomi con un altro problema da risolvere sempre in bash :)

è possibile rimuovere 2 stringhe sopra una determinata stringa ? esempio:

stringa_1

stringa_2

stringa3_pop

in fine stringa_1 e stringa_2 devono essere rimosse, preciso che le stringhe da rimuovere non sono sempre uguali, mentre stringa3_pop è sempre uguale,quindi,credo che conoscendo la terza stringa qualcosa si può fare? preciso un altra cosa, il file da modificare la cosa si ripete più volte. spero di essermi spiegato :( oppure un esempio http://paste.ubuntu.com/12646319/ Saluti

chiesto 03 Ott '15, 09:53

Davide_74's gravatar image

Davide_74
617235571

modificato 03 Ott '15, 10:24


Questa operazione non si può fare con "sed", che è uno stream editor e non può tornare indietro a cancellare righe precedenti alla posizione del match.

Si potrebbe fare con "awk", che può fare quasi tutto, ma sarebbe un pochino complicato.

La cosa migliore è farlo con "ed", che è l'editor di linea di UNIX, con il seguente comando

printf '%s\n' 'g/stringa3_pop/.-2,.-1d' 'w output.txt' | ed -s input.txt

Se si vuole riscrivere direttamente sullo stesso file input.txt, anziché su un nuovo file output.txt, basta omettere il nome del file di output:

printf '%s\n' 'g/stringa3_pop/.-2,.-1d' w | ed -s input.txt
coll. permanente

ha risposto 03 Ott '15, 16:15

enzotib's gravatar image

enzotib ♦♦
14.0k112186

modificato 03 Ott '15, 16:16

Grande :) funziona Grazie. provato il comando 2 omettendo il file output. mi viene un dubbio,"questa operazione non si può fare con sed" quindi, io sto creando uno script con dentro anche alcuni comandi con "sed" chi sa se funziona poi il tutto scusa l ignoranza "provare per credere" Saluti e Grazie

(03 Ott '15, 17:27) Davide_74 Davide_74's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×93

domanda posta: 03 Ott '15, 09:53

domanda visualizzata: 707 volte

ultimo aggiornamento: 03 Ott '15, 17:27

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.