Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [BASH] Eliminare caratteri compresi tra...

    Salve, non so se è meglio postare qui o in programmazione, nel qual caso spostatemi pure.

    Avevo la necessità di eliminare da un file di testo file.txt così composto:
    1 0 20 S 1 3 2 5 4 6 # aaa
    -1 0 20 S 54 2 1 # bbb
    1 5 20 S 7 6 5 1 2 # ccc
    1 8 20 S 9 5 2 3 1 2 5 4 9 5 2 # ddd
    -1 0 20 S -9 5 2 1 # eee
    la parte in neretto, ovvero da ogni riga che contiene l' espressione 1 0 20 S , vorrei togliere tutto ciò che è compreso tra la S esclusa e il cancelletto escluso, per ottenere:
    1 0 20 S # aaa
    -1 0 20 S # bbb
    1 5 20 S 7 6 5 1 2 # ccc
    1 8 20 S 9 5 2 3 1 2 5 4 9 5 2 # ddd
    -1 0 20 S # eee
    Ma non so come fare...
    Per ora mi areno su questo:

    codice:
     grep '1 0 20 S ' file.txt | sed qualcosa...
    Il grep mi permette di selezionare tutte le righe che contengono questa espressione e il risultato lo dovrei dare in pipe a sed, ma non riesco a trovare l' opzione per eliminare tutto il contenuto compreso tra due espressioni...
    Qualche aiuto? Grazie!

  2. #2
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    codice:
    sed -e 's/\(1 0 20 S\).*\(#.*$\)/\1 \2/' file.txt
    Una cosa del genere, forse non è raffinatissima, ma funziona (almeno credo...).

  3. #3
    Grazie mille toraz, funziona!!!
    Puoi spiegarmi la sintassi?
    \(1 0 20 S\).*\(#.*$\) vuol dire tutti i caratteri tra \(1 0 20 S\) e \(#.*$\)? Si usa \ per delimitare???
    \1 \2/ non ho capito cosa faccia. Forse conserva solo la prima espressione 1 0 20 S e l' ultima #.*$ ???
    Grazie ancora!

  4. #4
    Salve, oltre alla soluzione di toraz, ho trovato questa:
    codice:
    sed 's/^1\ 0\ 20\ S.*#/1\ 0\ 20\ S\ #/g' file.txt
    Sembra funzionare... Cosa ne pensate?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.