PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann mir jmd. folgende Zeile übersetzen? :) (tr und sed)



tecker2010
27-11-2007, 15:13
cat ${WORKDIR}/sysdok/$HOSTNAME/Hardware/"$f" | tr -c '[:print:][:space:]' '?' | sed '/^[ ]*$/d' >> $OUTFN

Das wäre entsprechende Zeile. Würde gern wissen was genau mit hier mit tr übersetzt wird. Wandle alle druckbaren Zeichen und Leerzeichen in ein "?"

Beim sed hätte ich gesagt: entferne aus jeder Zeile alle Leerzeichen? Wobei ich das eher so gemacht hätte --> sed '/^ *$/d'
Dann spreche ich also eine Gruppe von Leerzeichen an ... würd ich sagen.

Und die Ausgabe schreibe ich dann in die Variable $OUTFN bzw das Textfile was sich in meinen Fall dahinter verbirgt. Vielleicht kann mir das ja jmd. bestätigen oder verbessern :)

Grüße

jan61
03-12-2007, 20:10
Moin,

mit man tr würdest Du Dir die 1. Frage selbst beantworten können: Die Option -c bildet das Komplement des 1. Zeichensatzes - also werden alle Zeichen, die nicht Whitespace oder druckbar sind, durch ? ersetzt.

Zum sed: Mit diesem Konstrukt entfernst Du die komplette Zeile, wenn sie nur aus Leerzeichen oder nichts besteht. Die Gruppierung kommt vielleicht deshalb zustande, weil im Originalcode hier Leerzeichen und Tabulator gestanden haben?

Die Ausgabe landet in der Datei, deren Dateiname in der Variablen $OUTFN steht.

Jan

P.S.: Wenn Du nicht genau verstehst, wie ein Shellbefehl arbeitet, dann nimm ihn doch einfach, füttere ihn mit allen möglichen Eingabedaten und guck Dir an, was rauskommt.