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

    Piccolo suggerimento per scriptino per sostituire blocchi di testo

    Avrei necessità di crearmi uno script da usare per gestire le mie pagine web..

    in particolare dovrei avere la possibilità di sostituire tutte le ricorrenze di un determinato blocco di testo per ogni file di una directory. Stavo pensando di usare sed dentro uno script bash.. ma non so se mi conviene (anche perchè se non sbaglio è usato solo per piccole stringhe di testo). Avete qualche suggerimento particolare ?

    Tnx

    Alex

  2. #2
    SED e' soprattutto utilizzato per sostituzioni con espressioni regolari, ma non ha limiti nella lunghezza delle stringe. L'unico limite, se ben capisco quello che devi fare, e' che lavora riga per riga.

    Prima di avventurarmi oltre nelle ipotesi, comunque, sarebbe utile avere un esempio di cio' che devi sostituire, per capire la natura del problema e il suo contesto... poi la soluzione si trova.

    Ciao.
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  3. #3
    Certo..

    Allora supponiamo che abbia un tot di file .htm (in pratica un intero sito).
    Se voglio aggiungere una pagina al mio sito devo far si che per ogni pagina un blocco di codice debba essere sostituito (quello relativo al menu appunto): il tutto serve per far comparire nel menu la voce relativa alla nuova pagina che ho inserito.

    Tale menu è ben delimitato all'interno della pagina tramite un blocco di questo tipo
    quindi dovrebbe essere relativamente semplice beccarlo..

    Qualche suggerimeto ?

    Ciau!
    Alex

  4. #4
    scaricati rpl
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

  5. #5
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Questo è il file di esempio che verrà utilizzato come origine dati:
    codice:
    [sergio@winnie ~/tmp]$ cat pagina.html
    <html>
            <head>
                    <title>prova</title>
            </head>
            <body>
                    <div id="navigation">
                            <ul>[*]Home[*]Info[*]Modulo Informazioni[*]Corsi[*]Cos'&egrave l'ECDL[*]Convenzioni[*]Progetti[*]Software[*]Calendario[*]Annunci di lavoro[*]Novit&agrave[*]Corsi d'inglese[/list]
                    </div>
                    
    
    
                    bla bla bla 
    
                    bla bla bla 
    
                    bla bla bla 
    
                    </p>
                    <div if="footer">
                            
    
    
                            testo di chiusura
                            </p>
                            <ul>[*]Novit&agrave[*]Corsi d'inglese[/list]
                    </div>
            </body>
    </html>
    Questa la riga di comando (spezzata per non rovinare il layout del forum):
    codice:
    [sergio@winnie ~/tmp]$ sed -e '/<div id="navigation">/,/<\/div>/\
                           s%[/list]%[*]Corsi di SED by cacao74\n&%'\
                           pagina.html
    Questo il risultato restituito su STDOUT:
    codice:
    <html>
            <head>
                    <title>prova</title>
            </head>
            <body>
                    <div id="navigation">
                            <ul>[*]Home[*]Info[*]Modulo Informazioni[*]Corsi[*]Cos'&egrave l'ECDL[*]Convenzioni[*]Progetti[*]Software[*]Calendario[*]Annunci di lavoro[*]Novit&agrave[*]Corsi d'inglese
    [*]Corsi di SED by cacao74[/list]
                    </div>
                    
    
    
                    bla bla bla 
    
                    bla bla bla 
    
                    bla bla bla 
    
                    </p>
                    <div if="footer">
                            
    
    
                            testo di chiusura
                            </p>
                            <ul>[*]Novit&agrave[*]Corsi d'inglese[/list]
                    </div>
            </body>
    </html>
    Breve descrizione:
    Il comando sed, sostituisce il tag "[/list]" con il tag per il nuovo link ed un tag di chiusura per la lista. La sostituzione avviene solamente nell'area indicata, ovvero la div con id=navigation.
    Aggiungo, che se al posto di
    sed -e <regole> file.html ...
    si specifica
    sed -i -e <regole> file.html ...
    le operazioni di sostituzione avvengono direttamente nei file indicati, senza alcun output, ideale quindi per scripts di manutenzione.
    Io l'ho testato cosi' in una directory con i files html:
    $ sed -i -e <regole> *.html
    e il file risultano modificati come sopra indicato.
    Ora, dovendo operare la sostituzione su diverse pagine, puoi scegliere le modalità che preferisci:
    - eseguire lo script in ogni directory per i file *.html
    - utilizzando find nelle directory interessate
    - ...
    Chiedo scusa per le vaccate che dico in ambito HTML, ma non sono un tecnico web.

    Spero di non aver fatto errori con il copia&incolla...

    Per altre questioni...man sed

    ciao
    slack? smack!

  6. #6
    ottimo davvero.. grazie infinite!


    Alex

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.