Bash-Tricks: cat Ersetzen durch Umleitungsoperator: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K (Die Seite wurde neu angelegt: „Bash: Performance Tricks {{:Bash: Performance Tricks}} ===Regel=== Der Umleitungsoperator < kann anstelle des '''cat''' Befehls benutzt werden, wenn auf den …“) |
K (→Regel) |
||
Zeile 14: | Zeile 14: | ||
| align="center" style="background:#f0f0f0;"|''' Linux''' | | align="center" style="background:#f0f0f0;"|''' Linux''' | ||
|- | |- | ||
| vorher || | | vorher || 4.286 s || 0.037 s | ||
|- | |- | ||
| nachher || | | nachher || 2.884 s || 0.015 s | ||
|} | |} | ||
Aktuelle Version vom 14. Januar 2010, 11:19 Uhr
- Zusammenfassen von externen Kommandos:
for i in *; ls $i; done - grep Ersetzen durch =~ :
... | grep abc.txt - cat Ersetzen durch < :
cat abc.txt
Regel
Der Umleitungsoperator < kann anstelle des cat Befehls benutzt werden, wenn auf den Inhalt einer Datei im Rahmen eines Shellskriptes zugegriffen werden soll.
Damit lässt sich das Skript aus dem vorigen Trick weiter verbessern.
20 Dateien sollen nach dem Vorkommen der Zahl 5 durchsucht werden.
Cygwin | Linux | |
vorher | 4.286 s | 0.037 s |
nachher | 2.884 s | 0.015 s |
(Die meiste Zeit verbringen die Tests jetzt beim Aufruf des externen Kommandos cat).
Demonstration
mkdir bash-performance-tricks
cd bash-performance-tricks
for ((i=0; i<20; ++i )); do
echo "Hallo" > $i.txt
echo "Welt." >> $i.txt
echo "Dies" >> $i.txt
echo "ist die $i." >> $i.txt
echo "Datei." >> $i.txt
done
newline="
"
echo "======== mit cat ============="
treffer=""
time ( for i in *.txt; do
datei_inhalt=`cat $i`
regex='5'
if [[ $datei_inhalt =~ $regex ]]; then treffer+="$i$newline"; fi
done
echo "=~: Folgende Dateien enthalten die Zahl 5:
$treffer"
)
echo "======== mit < ============="
treffer=""
time ( for i in *.txt; do
datei_inhalt=`< $i`
regex='5'
if [[ $datei_inhalt =~ $regex ]]; then treffer+="$i$newline"; fi
done
echo "=~: Folgende Dateien enthalten die Zahl 5:
$treffer"
)