Textverarbeitung auf der Console

Anzeige von Dateien

cat & tac

  • Texte zusammenfassen:

    cat file1.txt file2.txt file3.txt > file_compiled.txt
    
  • Ausgabe mit Zeilennummern (-n) und mit allen Steuerzeichen (-A: LF, CR, TAB, ...):

    cat -n -A file.txt
    
  • Ausgabe mit Zeilennummern ohne Leerzeilen (-b), dabei doppelte Leerzeilen zusammenfassen (-s):

    cat -b -s file.txt
    
  • tac ist cat in rückwärts

Anfang und Ende von Dateien

head & tail

  • Die ersten und letzten 10 Zeilen:

    head -n 10 file.txt
    tail -n 10 file.txt
    
  • Die ersten 32 Kilobyte:

    head -c32k file.txt
    
  • Das Ende von /var/log/messages, bleibt offen und aktualisert, sobald was neues geloggt wird:

    tail -f /var/log/messages
    
  • Alle Zeilen ab Zeile 23:

    tail -n +23 file.txt
    

Zeichen ersetzen

tr

  • Kleinbuchstaben durch Großbuchstaben ersetzen:

    tr a-z A-Z < input > output
    
  • Alle ‘Nichtbuchstaben’ durch Leerzeichen ersetzen:

    tr -c A-Za-z ' ' < input > output
    
  • Mehrere Leerzeilen zu einer zusammenfassen:

    tr -s '\n' < input > output
    

Tabs/Spaces konvertieren

expand & unexpand

  • expand konvertiert Tabs zu Leerzeichen

  • unexpand konvertiert Leerzeichen zu Tabs

  • Konvertiere Tabs zu vier Leerzeichen:

    expand -t 4 input > output
    

Strings abschneiden und formatieren

fmt & pr

  • Ausgabe ab Zeichen 45 Umbrechen:

    fmt -w 42 file.txt
    
  • Einrückungen am Zeilenanfang beibehalten (CrownMargin):

    fmt -w 42 -c file.txt
    
  • Spalten (-2) formatieren:

    fmt -w 23 input.txt | pr -2 -o 3
    

Zeilen nummerieren und zählen

nl & wc

Zeilen nummerieren (per Default alle nichtleeren Zeilen):

nl -b a -i 10 -w 5 input.txt
nl -n rz -v 1000 quellcode.cpp
nl  
-b Bodyzeilen
-i Increment (um 10)
-w Breite der Nummernspalte
-n rz Rechtsbündig
-v Beginne mit Zeilennummer

Anzahl der Zeilen der Ausgabe von ls - Sprich: Wieviele Dateien liegen in /home?:

ls /home | wc -l

Daten in Hex und Oktal

hexdump & od

  • Ocatal Dump:

    od -txcz /etc/passwd
    od -td -An -N1 /dev/random
    
  • Verbrennt die Hexe! Gib 64 Byte aus (-n), Zeige Zeichen (-C):

    hexdump -n 64 -C /bin/ls
    

Text abschneiden und verkleben

cut, paste & join

cut - Jedes Zeichen ist eine Spalte, Feldtrenner ist per default \t, gibt Zeilen ohne Trennzeichen komplett aus.

  • Spalten 1-3,5,10 mit Trennzeichen ‘:’:

    cut -d: -f 1-3,5,10 file.txt
    

paste - klebt Daten Zeilenweise zusammen, Feldtrenner ist per default \t paste -s - Durchläuft die Dateien hintereinanter

Alle Zeilen der ersten Datei werden in eine Zeile geschrieben, mit Tab separiert, dann das gleiche mit der nächsten Dateie in die nächste Zeile

join - Daten relativ zusammenfüren

vereinigt 2 Dateien auf Basis eines Vereinigungsfeldes Vereinigungsfeld muss per Default das erste Feld einer Zeile sein:

join -t: -1 3 -2 5 file1.txt file2.txt

Text sortieren und aussortieren

sort & uniq

Default ist lektographisch nach ASCII (Abhängig von der Ländereinstellung der Console) Kann auch ‘Felder’ sortieren, der Feldtrenner ist dann im Default ein Leerzeichen

Lokale Nutzer nach Spalte 4 Sortieren:

sort -t: -k4,4 /etc/passswd
sort  
-r Absteigend sortieren (reverse)
-u unique (Siehe unten, uniq)
-n Nummerisch sortieren
-b ignore leading blanks
-t Trennzeichen
-k Sortiere nach Feld (zwischen den Zeichen von ‘-t’)

Doppelte Zeilen entfernen (Die Eingabe muss sortiert sein):

sort file.txt | uniq
sort -u file.txt