Bash-Tricks: cat Ersetzen durch Umleitungsoperator: Unterschied zwischen den Versionen

Aus Hergipedia
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 …“)
 
 
Zeile 14: Zeile 14:
| align="center" style="background:#f0f0f0;"|''' Linux'''
| align="center" style="background:#f0f0f0;"|''' Linux'''
|-
|-
| vorher || -- s || 0.037 s
| vorher || 4.286 s || 0.037 s
|-
|-
| nachher || -- s || 0.015 s  
| nachher || 2.884 s || 0.015 s  
|}
|}



Aktuelle Version vom 14. Januar 2010, 12:19 Uhr

Bash: Performance Tricks

  1. Zusammenfassen von externen Kommandos: for i in *; ls $i; done
  2. grep Ersetzen durch =~ : ... | grep abc.txt
  3. 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"
)