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

    Errore sed (shell Unix)

    Salve devo sostituire una stringa in un file utilizzando una shell.
    Utilizzando le seguenti istruzioni:

    codice:
    STRING="new=" 
    STRING2="old="
    sed "s/$STRING2/$STRING/g" oldfile > newfile
    la modifica va a buon fine.

    A me serve pero' aggiungere anche una data e modifico l'istruzione nel seguente modo:

    codice:
    date=$(date '+%d/%m/%Y %H:%M:%S') 
    STRING="new="$date 
    STRING2="od=" 
    sed "s/$STRING2/$STRING/g" oldfile > newfile
    Ma ricado nel seguente errore:
    sed: command garbled
    sono alle prime armi, qualcuno potrebbe darmi una dritta?
    Grazie mille.

  2. #2
    Gli slash (/) della data vanno a "confondere" sed, che si aspetta una stringa del tipo 's/regex/sostituzione/g'. Una possibilità è fare l'escaping degli slash nelle due stringhe (al posto di / metti \/); in alternativa, puoi usare un differente delimitatore per il comando s di sed:
    codice:
    sed "s~$STRING2~$STRING~g" oldfile > newfile
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    grazie mille funziona...
    Se volessi fare la seguente sostituzione:
    codice:
    sed "s~^$STRING2~$STRING~g" oldfile > newfile
    ovvero vorrei sostituire tt la riga che inizia con STRING2 nn funziona...
    1) trova la riga che inzia con la STRING2
    2) una volta trovata la sostituzione la esegue ma quello che nn combacia la accoda...
    Io invece vorrei che una volta trovata la riga che inizia con quella stringa la modifica abbia effetto su tutta la riga...

    ad esempio:
    STRING=prova10
    STRING2=prov
    risultato del sed:
    STRING=prova10a10
    grazie mille.

  4. #4
    grazie lo stesso... ho risolto...

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.