Dienstag, 4. November 2008
Textfiles formatieren
Gelegentlich muss ich Textdateien anders formatieren, Leerzeilen entfernen, den Umbruch verschieben...
Grep entfernt alle Leerzeilen, paste fügt alles zu einer langen Textwurst zusammen, getrennt durch ein Leerzeichen und fold bricht dann beim letzten Wortende vor Spalte 70 um.
Montag, 3. November 2008
Strings bearbeiten mit (g)awk
In Skripten muss ich gelegentlich Ausgaben von Befehlen formatieren oder sonstwie bearbeiten, um sie z.B. als Mailtext eines Cronjobs zu verwenden.
Das gibt den Hostnamen in Großbuchstaben aus.
Natürlich geht auch das Umwandeln in Kleinbuchstaben:
Ergebnis: asdfgh
Vielleicht will ich aber einfach nur wissen, wie lang eine Variable (ein String) ist.
Ergebnis: 21
"Strings bearbeiten mit (g)awk" vollständig lesen
Sonntag, 2. November 2008
Sekunden umrechnen in Stunden-Minuten-Sekunden
Eine Angabe in Sekunden ist genau, aber schwer lesbar. Wieviel Stunden sind z.B. 7426387 Sekunden?
Ergebnis: 2062 std 53 min 7 s
Datum und Timestamps
Gelegentlich brauche ich einen Unix Timestamp als "normales" Datum.
Date kann ja ein Datum auch als Timestamp anzeigen (mit der Option +%s). Die umgekehrte Richtung, also einen Timestamp in den Datumstring umwandeln, geht mit date aber nur eingeschränkt (nur UTC). Brauche ich einen Timestamp als Datum, verwende ich (g)awk.
Ergebnis: So 12 Aug 2007 05:06:40 CEST
Mehr Varianten zur Datumsformatierung mit strftime() liefert, na klar, man strftime (die C-Funktion).
UPDATE: doch, doch date kann's auch abseits von UTC:
Und das ist korrekt incl. Zeitzone!
Der Trick liegt im Voranstellen von @, der andere mögliche Aufruf mit Sekunden:
Schade, dass davon rein gar nichts in der manpage von date steht, ich habe die Methode zufällig in den Kommentaren einer Online-Zeitung gefunden.
Samstag, 1. November 2008
sed fügt Zeilen zusammen
Sed ist ein Stream EDitor, der auch ohne Weiteres in Bashskripten verwendet werden kann. An sich liest sed immer nur einzelne Zeilen ein, aber kann sehr wohl auch mehrere auf einmal verarbeiten.
Fügt jeweils 3 Zeilen der datei.txt zusammen, wobei die erste Zeile ausgelassen wird.
Die Einträge werden durch Strichpunkt getrennt. Die Ausgabe erfolgt nach stdout.
Sucht mit egrep die Zeilen mit den gewünschten Suchbegriffen und baut daraus eine csv-Datei mit Strichpunkt als Feldtrennzeichen, die z.B. mit OpenOffice weiter verarbeitet werden kann.
"sed fügt Zeilen zusammen" vollständig lesen