Portál AbcLinuxu, 7. května 2025 12:27
Ahoj, snažím se udělat si skriptík na náhodný výběr vtipu ze souboru vtipy.txt, vybraný vtip se vypíše a poté uloží do vtipy2.txt. Ovšem nevím dál jak zavolat a použít funkci "tr" či "sed" tak, aby vybraný vtip z původního vtipy.txt smazal. Buď se může zavolat přímo smazání řádku podle nahodne_cislo, nebo vyhledat řetězec $vtip a smazat pomoci něj.
#!/usr/bin/perl use strict; use warnings; my $rozsah = `wc -l vtipy.txt | sed -n 's/[^0-9 ]//gp'`; my $nahodne_cislo; do { $nahodne_cislo = int(rand($rozsah)); } until ($nahodne_cislo != 0); my $vtip = `cat vtipy.txt | head -n $nahodne_cislo | tail -n 1`; my $file = 'vtipy2.txt'; open(vti2, ">>$file"); print vti2 "$vtip"; close(vti2); print "$vtip"; print "Celkovy rozsah vtipu - (test): $rozsah"; #system("`cat vtipy.txt | sed -i '/$vtip/d' > vtipy3.txt`"); my @args = ( "bash", "-c", "cat vtipy.txt | sed -i '/$vtip/d' > vtipy3.txt" ); system(@args);
my @vtipy = <vtipy.txt>; my $nahodne_cislo = int rand scalar @vtipy my ($vtip) = splice @vtipy, $nahodne_cislo, 1; open VTIPY, '>', 'vtipy.txt' or die "vtipy.txt: $!\n" open VTIPY2, '>', 'vtipy2.txt' or die "vtipy2.txt: $!\n" print VTIPY2 $vtip; print VTIPY @vtipy; close VTIPY; close VTIPY2;
#!/usr/bin/perl use strict; use warnings; open FH, "vtipy.txt" or die "Cannot open file"; my @vtipy = <FH>; close FH; my $nahodne_cislo = int(rand($#vtipy)); my $vtip = splice(@vtipy,$nahodne_cislo,1); print "Vyberam vtip cislo: ".($nahodne_cislo+1)."\n"; print "Vtip: $vtip"; open(FH, ">vtipy2.txt") or die "Cannot open file"; print FH $vtip; close(FH); open(FH, ">vtipy.txt") or die "Cannot open file"; print FH @vtipy; close(FH);
l=$(wc -l < vtipy.txt) l=$(($RANDOM % $l)) sed -n -e "$l p" vtipy.txt >> vtipy2.txt sed -i "$l d" vtipy.txt
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.