Bash-Tricks: cat Ersetzen durch Umleitungsoperator
Zur Navigation springen
Zur Suche springen
- 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"
)