Portál AbcLinuxu, 18. prosince 2025 05:53
man bash
... a hledat IFS (nebo $IFS)
while read radek; do
echo $radek
done < soubor.txt
viz man bash
while read a b c prvni druhy; do echo $prvni echo $druhy done
donepatri
done<soubor.txt.
$ cat ./readfile.sh
#!/bin/sh
while read radek; do
echo $radek
done < testfile.txt
$ time ./readfile.sh > /dev/null
real 0m10.421s
user 0m5.556s
sys 0m4.335s
$ cat readfile.py
#!/usr/bin/env python
import sys
file = open("testfile.txt")
for line in file:
sys.stdout.write(line)
file.close()
$ time ./readfile.py > /dev/null
real 0m0.361s
user 0m0.329s
sys 0m0.016s
Řešení v pythonu je přibližně 28 krát rychlejší.
cat… :-)
P.S.: to neděláte dobře s tím 'echo $radek'. Jednou se vám to vymstí…
$ time cat testfile.txt > /dev/null real 0m0.016s user 0m0.002s sys 0m0.004sJenže cat nečte po řádcích, což byl jeden z požadavků.
echo $radek? Já tomu nerozumím, já to jen opsal a spustil.
2. Zkuste si to na souboru s jedním řádkem, obsahujícím písmeno 'a', tři mezery a písmeno 'b'. Pak porovnejte výstup vašeho skriptu se vstupem.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.