[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