ho questo semplice ingressorandomizzazione testo tra i delimitatori
I have {red;green;orange} fruit and cup of {tea;coffee;juice}
uso Perl per identificare modelli tra due parentesi esterna delimitatori {
e }
e randomizzare i campi all'interno con il delimitatore interna ;
.
sto ottenendo questo uscita
I have green fruit and cup of coffee
questo è il mio lavoro script Perl
perl -plE 's!\{(.*?)\}[email protected]=split/;/,$1;$x[[email protected]]!ge' <<< 'I have {red;green;orange} fruit and cup of {tea;coffee;juice}'
Il mio compito è quello di elaborare questo formato di input
I have { {red;green;orange} fruit ; cup of {tea;coffee;juice} } and {nice;fresh} {sandwich;burger}.
Come ho capito, lo script dovrebbe saltare extern al chiusura braces { ... }
nella prima parte del testo, che ha testo all'interno di parentesi aperte e chiuse:
{ {red;green;orange} fruit ; cup of {tea;coffee;juice} }
Dovrebbe scegliere una parte casuale, simili
{red;green;orange} fruit
o
cup of {tea;coffee;juice}
Quindi va più in profondità:
green fruit
Dopo tutto il testo viene elaborato, il risultato può essere uno dei seguenti
I have red fruit and fresh burger.
I have cup of tea and nice sandwich
I have green fruit and nice burger.
I have cup of coffee and fresh burger.
Lo script dovrebbe analizzare e casuale il testo successivo troppo. Per esempio
This {beautiful;perfect} {image;photography}, captured with the { {NASA;ESA} Hubble Telescope ; {NASA;ESA} Hubble Space Telescope} }, is the {largest;sharpest} image ever taken of the Andromeda galaxy { {— otherwise known as M31;— known as M31}; [empty here] }.
This is a cropped version of the full image and has 1.5 billion pixels. { You would need more than {600;700;800} HD television screens to display the whole image. ; If you want to display the whole image, you need to download more than {1;2} Tb. traffic and use 800 HD displays }
Un'uscita esempio potrebbe essere
This beautiful image, captured with the NASA Hubble Telescope, is the
sharpest image ever taken of the Andromeda galaxy — otherwise known as
M31.
This is a cropped version of the full image and has 1.5 billion
pixels. You would need more than 700 HD television screens to display
the whole image.
Perché usi 'srand'? – choroba
Pensavo ci fosse una buona ragione, ma (leggendo i documenti) no. –