Visualizzazione risultati 1 fino 3 di 3

Discussione: Find and replace con espressioni regolari

  1. #1
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito Find and replace con espressioni regolari

    Ciao a tutti,

    domandina rapida rapida per i veri Linux guru: per creare il debug di una traduzione di un componente di Joomla (vediamo se lo riconoscete da questi pochi indizi... ma non è così essenziale) ho inserito nelle stringhe di traduzione delle "marcature" del genere:
    Codice:
    ...
    DEFINE('_UE_HITS','#L1 Visite'); // #L1
    DEFINE('_UE_USERNAME','#L2 Nome utente'); // #L2
    DEFINE('_UE_Address','#L3 Indirizzo'); // #L3
    DEFINE('_UE_City','#L4 Città'); // #L4
    DEFINE('_UE_State','#L5 Provincia'); // #L5
    DEFINE('_UE_PHONE','#L6 Telefono'); // #L6
    DEFINE('_UE_FAX','#L7 Fax'); // #L7
    DEFINE('_UE_ZipCode','#L8 Codice postale'); // #L8
    DEFINE('_UE_Country','#L9 Stato'); // #L9
    DEFINE('_UE_Occupation','#L10 Professione'); // #L10
    ...
    In pratica, le stringhe di traduzione includono un identificatore del tipo #Lxxx oppure #Axxx seguito da uno spazio (con xxx numero intero, fino a tre cifre per il momento...), in modo che sull'applicativo che le carica potessi vedere in quale posizione venivano caricate le stringhe.

    Ora, la traduzione mi soddisfa, quindi vorrei eliminare le marcature di cui sopra (e lo spazio che le segue) per realizzare la versione finale. C'è un comando rapido che possa farlo in Ubuntu 10.04, senza dover modificare riga per riga il file (sono "solo" due, ma di quasi un migliaio di righe ciascuno)? Ho già provato a dare un'occhiata al comando sed, mirabolante in base alle promesse, ma che non sono riuscito a far funzionare...

    Nota: la soluzione migliore prevederebbe che la marcatura venga tolta dalla stringa di traduzione (obbligatorio), ma non dal commento a fine riga, in modo che la riga possa ancora essere identificabile.

    Grazie a chi risponde... statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Decisamente è un lavoro per sed!

    Codice:
    DEFINE('_UE_Address','#L3 Indirizzo'); // #L3
    Se ho capito bene vuoi rimuovere #Lxxx oppure #Axxx, ma solo all'interno delle stringhe. Assumendo che il marcatore appaia sempre all'inizio delle stringhe, puoi fare così:

    Codice:
    sed -e "s/'#L[0-9]\+ /'/" -e "s/'#A[0-9]\+ /'/" varifile*.txt
    Si potrebbe usare una sola espressione regolare, ma a volte il carattere '|' crea problemi. L'espressione sopra dovrebbe invece andare sia su Windows che su Linux.

    Lanciandolo così l'output va a schermo. Aggiungendo un -i, le modifiche vengono applicate ai file —fai un backup

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Grazie mille per le dritte... alla fine ho usato questi comandi:
    Codice:
    sed -e "s/'#A[0-9]\+ /'/" -e "s/\"#A[0-9]\+ /\"/" -i admin_language.php
    sed -e "s/'#L[0-9]\+ /'/" -e "s/\"#L[0-9]\+ /\"/" -i language.php
    Avevo dimenticato di dire che la A e la L servivano ad identificare i file in cui erano inserite le stringhe (A per admin_language.php, L per language.php). E anche che per alcune stringhe il delimitatore era il "double-quote" e non il "single quote"...

    Come sostituzione, funziona che è una meraviglia... se può interessare, è una traduzione un po' meno scandalosa per Community Builder...

    Grazie ancora... stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •