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

    Eliminare una riga da un file usando bash

    ola

    spero di nn aver sbagliato posto ^^
    il mio problema è il seguente:

    sto creando un set di script per gestirmi i vhosts di apache, quindi creazione\eliminazione di un dominio e creazione\eliminazione di un sottodominio

    Tutto funziona perfettamente...ed ho la lista di siti web esistenti (quindi coppia sottodominio+dominio) in un file che includo nel file di config di apache. In questo file ci stanno una serie di include che si richiamano i file che contengono le singole direttive di vhosts per i vari siti

    nello specifico ho il problema li...
    quando elimino un sotto dominio, dopo che elimino tutti i file e la conf inenerente a lui devo eliminare anche la riga da li e poi restartare apache...ovviamente restartare apache nn è un problema, ma eliminare la riga lo è :\

    ho provato con un
    codice:
    for LINE in `cat /path/to/web_site_list`; do
      echo ${LINE}
    done
    e mi fa la separazione sia per gli spazi sia per le righe...in pratica stampa qualcosa del genere

    codice:
    Include
    conf/web_sites/xyz.com__www
    Include
    conf/web_sites/xyz.com__admin
    Include
    conf/web_sites/xyz.com__stats
    Include
    conf/web_sites/xyz.com__webmail
    Include
    conf/web_sites/test.com__www
    il file in realtà è di questo tipo...

    codice:
    Include conf/web_sites/xyz.com__www
    Include conf/web_sites/xyz.com__admin
    Include conf/web_sites/xyz.com__stats
    Include conf/web_sites/xyz.com__webmail
    Include conf/web_sites/test.com__www
    a me interessa, in questo caso specifico eliminare il sotto dominio www.test.com (che è presente nell'ultima riga)

    come posso fare? devo usare ad es sed o awk? o non c'entra niente?

    gracias a todos

  2. #2

    Re: Eliminare una riga da un file usando bash

    Originariamente inviato da daniele_dll

    [...]
    nello specifico ho il problema li...
    quando elimino un sotto dominio, dopo che elimino tutti i file e la conf inenerente a lui devo eliminare anche la riga da li e poi restartare apache...ovviamente restartare apache nn è un problema, ma eliminare la riga lo è :\
    [...]
    il file in realtà è di questo tipo...

    codice:
    Include conf/web_sites/xyz.com__www
    Include conf/web_sites/xyz.com__admin
    Include conf/web_sites/xyz.com__stats
    Include conf/web_sites/xyz.com__webmail
    Include conf/web_sites/test.com__www
    a me interessa, in questo caso specifico eliminare il sotto dominio www.test.com (che è presente nell'ultima riga)
    Io direi:

    codice:
    $ cat test.txt
    Include conf/web_sites/xyz.com__www
    Include conf/web_sites/xyz.com__admin
    Include conf/web_sites/xyz.com__stats
    Include conf/web_sites/xyz.com__webmail
    Include conf/web_sites/test.com__www
    $ sed /test.com/d < test.txt > test.txt.new
    $ mv test.txt test.txt.old
    $ mv test.txt.new test.txt
    $ cat test.txt
    Include conf/web_sites/xyz.com__www
    Include conf/web_sites/xyz.com__admin
    Include conf/web_sites/xyz.com__stats
    Include conf/web_sites/xyz.com__webmail
    $ cat test.txt.old
    Include conf/web_sites/xyz.com__www
    Include conf/web_sites/xyz.com__admin
    Include conf/web_sites/xyz.com__stats
    Include conf/web_sites/xyz.com__webmail
    Include conf/web_sites/test.com__www
    Dovrebbe andar bene.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  3. #3
    fatto...ho appena risolto

    per chi fosse interessato...
    http://unix.about.com/library/weekly/aa031802a.htm

    qui c'è una guida veramente basilare ma molto comoda ^^
    ciauz

  4. #4

    Re: Re: Eliminare una riga da un file usando bash

    Originariamente inviato da Ikitt
    [...]

    Dovrebbe andar bene.
    doh...avevo appena risolto DD
    cmq grazie tante!

  5. #5
    Originariamente inviato da daniele_dll
    fatto...ho appena risolto
    'Azz sono arrivato secondo...

    Vabbeh, l'importante e` che tu abbia risolto

    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  6. #6
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    La soluzione di Ikitt è corretta, ma applicabile solo in questo caso specifico. Se il problema è più ampio, devi darci dei particolari in più. Vuoi eliminare una generica linea? Vuoi eliminare solo l'ultima? O va bene così?

  7. #7
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    letto ora pure io

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    puoi passare da un file temporaneo per poi sostituirlo:
    codice:
    awk 'match($0,"frase da cancellare") == 0 {print $0}' fileorigine > filetemporaneo
    mv filetemporaneo filedestinazione
    per quanto riguarda l'esempio che facevi, il motivo la bash ha una variabile chiamata IFS che viene utilizzata come separatore, e che di default è lo spazio.
    non ho mai provato ad assegnarle come valore l'invio, ma dovrebbe funzionare....







    non ci credo, ho dato una risposta a daniele_dll!!!

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ma cazzo in 10 minuti millemilioni di risposte....

  10. #10
    mmm mi interessava sapere solo come si eliminava DD
    lo scripting bash un po lo conosco x questo nn ho dato + particolari :P

    nel mio codice, ovviamente, a test.com__www sono andato a sostituire delle var che prendo dallo standard input

    ora devo solo fare le interfacce usando le dialog utils...sarà troppo divertente

    ciauz e graziez

    @gianiaz:
    grazie, non sapevo la variabile che stabiliva la separazione, avevo pure provato usando $\ che è quella perl (in disperazione si prova di tutto) xo alla fine è stato meglio scoprirlo dopo...almeno ho scoperto a cosa serve sed e l'ho imparato ad usare un pochettino

    non ci credo, ho dato una risposta a daniele_dll!!!
    :master:

    PS: sed usa le PCRE (Perl Compatible Regular Expression) giusto? ho visto che mette due caratteri...uno di inizio ed un terminatore e poi i modificatori prima e dopo (in base a cosa servono) e se si usa il modificatore s c'è il contenuto da sostituire giusto?

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.