[linux] bash
Matus UHLAR - fantomas
uhlar na fantomas.sk
Středa Listopad 26 22:47:38 CET 2003
On 26.11 20:45, jandrejkovic na fvs.upjs.sk wrote:
> ak som Ta spravne pochopil, tak chces nacitat postupne riadok po riadku v
> bashi. Na to Ti pomozu nasledujuce sposoby vypisania N-teho riadku suboru:
myslim ze pomoze aj konstrukcia
while read riadok
do
echo $riadok
done < subor
pripadne
prikaz | while read riadok
do
echo $riadok
done
(pre istotu: "echo $riadok" mozes nahradit de facto hocicim)
> Bash je dobra vec, ale na cykly a zlozitejsie veci by som Ti odporucil
> perl, kde programcik na nacitanie suboru moze vyzerat tatko:
>
> #!/usr/bin/perl -w
> $file="myfile.txt";
> if ($ARGV[0]."" ne "") {$file=$ARGV[0];}
> open (IN, $file) or die "Error: cannot open $file";
> while ($line=<IN>) {
> print ("$line\n");
> }
> close (IN);
>
> Tento programcik nacita a vypise po riadkoch subor myfile.txt, alebo subor
> ktory mu zadas ako parameter.
perl ma konstrukciu <> (ja citam pica), ktora pomaha programom sptravat sa
ako unix filtre - bud postupne prejde vsetky subory zadane na prikazovom
riadku, alebo pouzije stdin. taktiez akceptuje "-" ako stdin, takze
skriptik:
#!/usr/bin/perl
while (<>) {
print $_;
}
urobi presne to iste co 'cat' (az na switche ktore tu nie su
implementovane:
echo ahoj | cat hlavicka - chvost
vypise najprv subor hlavicka, potom stdin, potom subor chvost.
> Ak si chces riadky ulozit do pola, tak do cyklu vloz riadok:
> push (@pole, $line);
alebo sa da pouzit
@pole = <SUBOR>;
pripadne
@pole = <>;
ktore do premennej @pole nacita cely subor, pripadne to co som popisoval
vyssie (pre <>);
> PS: Ak sa rozhodnes pre perl, nezabudni si nastudovat regularne vyrazy,
> oplati sa to...
nielen regularne vyrazy. manualova stranky perlu (perltoc, perlsyn,
perldata, perlop, perlsub, perlfunc) pripadne nejaka pekna knizka naucia
cloveka (ak si to prestuduje) vela dobrych finticiek...
--
Matus UHLAR - fantomas, uhlar na fantomas.sk ; http://www.fantomas.sk/
Warning: I don't wish to receive e-mail advertising to this address.
Varovanie: Nezelam si na tuto adresu dostavat akukolvek reklamnu postu.
It's now safe to throw off your computer.
Další informace o konferenci linux