Sto analizzando un file PHP e avvolgendo gli elementi del prototipo di funzione in HTML. Se ci sono e commerciali, tuttavia, si rompe il mio codice.Sed e Awk in uscita e commerciale (&)
ingresso: function foo (&$var1, &$var2){...}
// as String
output desiderato (in HTML): &$var1, &$var2
// fondamentalmente, solo le variabili di uscita in modo che siano correttamente visualizzate in un browser
questo momento , Sto inviando ciascuna variabile nel sub metodo awk , e quindi a sed.
sub(/^&/, "\\\&", param) #param is the variable of interest (e.g. &$var1)
#Intermediate step in case it's relevant. The awk-processed elements
#are sent to ${file}_param.txt. Each set of parameters are delimited by colons.
param=$(cut -d: -f$counter ${file}_param.txt)
#Replace some default text in template file with real stuff.
sed -i "s|@PARAM|$param|1" "$base"_funct_def.txt
uscita sto ottenendo: I e commerciali vengono interpretati. L'intera partita è sostituita.
Isolamento del numero: Fare quanto segue visualizza invece 'g $ var1' nel browser come voglio. Tuttavia, sto cercando di ottenere un '&'.
sub(/^&/, "g", param)
I miei tentativi: Ho usato tre backslash perché ho pensato che sarebbe awk primo processo in '\ &', che, immessa nella sed, potrebbe interpretare '\ &' come il letterale '&'. Tuttavia, ho provato ovunque da 1 a 6 backslash, senza alcun risultato.
DOMANDA: Come posso sfuggire allo &?
manuale: http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html
Alcuni/domande di design "meta" su quello che sto cercando di fare (non necessario per la domanda !!)
ho mucchio di File PHP che sto cercando di generare un po 'di documentazione per (strutturato come Javadocs). Sto esaminando e analizzandolo usando REGEX e gli script di shell, in modo da elencare il nome della funzione, i parametri e gli elementi restituiti. Finora, REGEX ha funzionato abbastanza bene, penso, ma ho letto molto su come questo è qualcosa per cui REGEX NON dovrebbe essere usato. Sarei lieto di ricevere commenti in merito a ciò (come viene solitamente generata la documentazione?). Grazie ragazzi!
Cosa significa '$ param' in realtà contengono? Se i comandi non vengono eseguiti in modo sequenziale (ad esempio se ci sono in realtà alcuni altri codici in mezzo), non dovresti metterli nello stesso blocco di codice, è fuorviante. – doubleDown
Ci scusiamo per la parte fuorviante. Lo terrò a mente in futuro. Il parametro $ contiene un elemento parametro. Per esempio, se c'è una funzione: 'function foo (& $ arg1, $ arg2)' $ param dovrebbe essere ''& $ arg1'' Buone notizie però: ho trovato una soluzione. Prima di eseguire sed, mi sono assicurato di scappare da qualsiasi '&'. Ho aggiunto il seguente a destra dopo il primo param assegnamento: 'param = $ (echo $ param | sed 's |^& | \\ & | g')' Questo è in contrasto con il tentativo di avvolgere le cose nell'avk porzione del codice. – bobbyjoe93