Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problemi con sed

  1. #1

    Problemi con sed

    ciao

    ho un problema con sed che con altri programmi non capita.
    Per esempio prediamo grep, se ho una variabile che indica un file se il filename è composto a uno 'space' con grep posso risolvere in questo modo:

    grep "regulare expression" $variabile avrò dei problemi nella individuazione del file se ci metto la virgolette doppie così grep "regulare expression' "$variabile" va tutto a posto.

    Con sed invece avrò dei problemi e non riesco a risolvere neanche con le doppie virgolette.

    Quello che vi vorrei chiedere è c'è un comando che mi inserisce le backslach nei path dei files in cui ci sono dei [:space:]? in pratica come fa' il tasto TAB.

    bye
    My Blog: Nuvole Sparse
    Ubuntu-Linux

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma di cosa stai parlando? :master:

    Ad occhio sembra linux... nel dubbio ti sposto
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Farthest, forse non ho capito bene la tua richiesta.

    Per utilizzare lo slash, devi proteggerlo con il backslack,
    ovvero '\/'. Traduciamo in 'codice' quanto detto:

    codice:
    cacao74@server:~$ echo "/home/cacao74" | sed 's/\//_/g'
    _home_cacao74
    
    e per renderlo più leggibile all'occhio meno smaliziato,
    utilizzando un separatore diverso da '/':
    
    cacao74@server:~$ echo "/home/cacao74" | sed 'sx/x_xg'
    _home_cacao74
    
    per la sostituzione degli spazi con uno '/', quindi:
    
    cacao74@server:~$ echo " home cacao74" | sed 'sx\ x/xg'
    /home/cacao74
    man sed
    man bash

    ciao
    slack? smack!

  4. #4
    Mi spiego meglio!!
    ho un file che si chiama 'vattela a pesca.txt'
    se imposto file=vattela a pesca.txt

    e poi cerco ci modificare codesto file con sed

    es: sed -r 's/amo/esca/g' $file

    non funziona perchè di sono gli spaces se invece file=vattela\ a\ pesca.txt funziona.

    se per esempio uso grep
    grep "amo" "$file"--> file=vattela a pesca.txt
    funziona

    Allora ho risolto con `echo $file | sed 's/[[::space]]/\\[[::space]]/g'`.

    ma a parte questa, c'è un'altra soluzione?
    My Blog: Nuvole Sparse
    Ubuntu-Linux

  5. #5
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Una variabile contenente spazi, va SEMPRE delimitata da una coppia di apici (singoli o doppi), se non si vuole 'escapare' ogni singolo spazio.

    codice:
    cacao74@server:~$ cat << EOT > "vattela a pesca.txt"
    > amo
    > lenza
    > filo
    > EOT
    
    cacao74@server:~$ cat vattela\ a\ pesca.txt
    amo
    lenza
    filo
    
    cacao74@server:~$ sed -i "s/amo/&+esca/" "$file"
    
    cacao74@server:~$ cat $file
    amo+esca
    lenza
    filo
    La pagina di manuale di bash offre più informazioni riguardo il 'quoting' delle variabili.

    ciao
    slack? smack!

  6. #6
    Grazie

    My Blog: Nuvole Sparse
    Ubuntu-Linux

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 © 2025 vBulletin Solutions, Inc. All rights reserved.