Script di shell Linux: copia un file (di testo) e sostituisci un token con un percorso


1

Devo creare un file di testo in cui parti di esso dovrebbero essere sostituite da qualsiasi percorso arbitrario. Volevo farlo copiando un file modello e quindi sostituire un modello speciale, ad esempio ${MY_PATH}con il percorso arbitrario (spero, non è necessario alcun preventivo). Come fare quella parte sostitutiva (gli sedesempi che ho visto finora sembravano essere problematici a causa del percorso arbitrario).

Risposte:


2

La sostituzione non ha bisogno di molte citazioni: solo barre rovesciate e il separatore regexp. Per comodità, quest'ultimo può spesso essere scelto arbitrariamente - invece di s /.../.../ si potrebbe, in molti programmi, dire s | ... | ... | o simili.

Supponendo che il percorso sia $path, potresti fare:

epath=${path//'\'/'\\'}
epath=${epath//'|'/'\|'}
sed "s|\${MY_PATH}|$epath|g" < in > out

O se non hai paura delle altre lingue, puoi usare:

perl -e 'my $path = shift(@ARGV); while (<STDIN>) {s|\$\{MY_PATH\}|$path|g; print}' "$path" < in

(Non sono sicuro di aver ottenuto il campione giusto, ma hai avuto l'idea.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.