Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
linux:textdateibehandlung [2008/02/26 23:31] – st | linux:textdateibehandlung [2011/03/02 03:22] (aktuell) – [Anfang / Ende anzeigen] st | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Textdateien behandeln ====== | ||
+ | Oft werden wir es mit Textdateien zu tun haben, dabei intessiert uns nur ein bestimmter Inhalt. Das können z.b. Log-Dateien sein oder Konfigurationsdateien. Hier erst einmal eine Übersicht: | ||
+ | |||
+ | * cat Datei(en): liest die Datei(en) aus und zeigt sie nacheinander an. | ||
+ | * uniq: meldet oder löscht doppelte Zeilen | ||
+ | * wc: zählt die Wörter, mit " | ||
+ | |||
+ | |||
+ | |||
+ | ===== Seitenweise anzeigen ===== | ||
+ | more Datei | ||
+ | less Datei (man kann zurückscrollen) | ||
+ | |||
+ | ==== Anfang / Ende anzeigen ==== | ||
+ | |||
+ | head -n Anzahl Datei | ||
+ | Zeigt die ersten Anzahl Zeilen einer Datei an | ||
+ | |||
+ | tail [- n Anzahl] [-f] Datei | ||
+ | Zeigt die letzten Anzahl Zeilen einer Datei an. Die Option -f bewirkt, dass sich tail danach nicht beendet, sondern wartet ob neue Zeilen in die Datei geschrieben werden (z.b. von anderen Programmen). Diese Änderungen werden dann auch angezeigt. Abbruch mit CTRL-c. Nützlich um z. B. Apache- oder Syslog -files " | ||
+ | |||
+ | |||
+ | |||
+ | ===== Durchsuchen ===== | ||
+ | grep Suchmuster Datei [Dateien] | ||
+ | **Grep durchsucht Datei[en] nach Suchmustern** und gibt die Zeilen der Datei[en] aus, wo das Suchmuster zutrifft. | ||
+ | Viele Funktionsschalter (z.B. '' | ||
+ | |||
+ | :!: grep -c zählt auch die Anzahl der Treffer | ||
+ | |||
+ | siehe auch [[http:// | ||
+ | Beispielweise sehr nützliche für mich ist der folgende Befehl zum durchsuchen von Dateien des aktuellen Verzeichnisses (und darunter) nach der bestimmten Zeichenkette " | ||
+ | find . -type f -exec egrep -i " | ||
+ | Schneller ist die Verwendung von '' | ||
+ | find . -type f | xargs egrep -i " | ||
+ | |||
+ | ===== Sortieren ===== | ||
+ | |||
+ | sort Kriterien Datei | ||
+ | Sortiert Datei nach Kriterien. Bsp: sort -t : -k 3 /etc/passwd sortiert die Datei /etc/passwd nach der dritten Spalte und verwendet den Doppelpunkt als Spaltentrenner | ||
+ | |||
+ | |||
+ | ===== Text(-datenströme) bearbeiten ===== | ||
+ | * **[[wpde> | ||
+ | |||
+ | * **cut**: extrahiert Textspalten aus einer Datei (oder von der Standardausgabe anderer Programme). Beispiel: cut liest einzelne Spalten (hier die erste) aus einer Kommaseparierten Liste. < | ||
+ | |||
+ | * **[[wpde> | ||
+ | |||
+ | * **tr**: Zeichen aus einem (Text-)Datenstrom konvertieren oder löschen | ||
+ | |||
+ | |||
+ | ===== Unterschiede anzeigen / einen Patch anwenden ===== | ||
+ | * **Unterschiede anzeigen**: | ||
+ | * diff: zeigt Unterschiede zweier Textdateien an | ||
+ | * sdiff: zeigt Unterschiede zweier Textdateien benutzerfreundlich nebeneinander an. | ||
+ | * **einen Patch anwenden**: Wenn man mit diff den Unterschied zwischen zwei (Text)Dateien herausgefunden hat, kann man diese Differenz auf das Original anwenden ohne die geänderte Datei komplett zu übertragen. | ||
+ | |||
+ | diff kann mehrere Formate erzeugen, im einfachsten Fall (ohne weitere Parameter) wird nur die geänderte Zeile und die Position angezeigt: | ||
+ | < | ||
+ | 77c77 | ||
+ | < | ||
+ | --- | ||
+ | > | ||
+ | </ | ||
+ | Das ist nun nicht sehr menschenlesbar und man erkennt auch nicht den Kontext den geänderten Zeile. Daher eignet sich das unified-Format (Option -u) besser. | ||
+ | |||
+ | <box 100% round blue | Anwendungsbeispiel> | ||
+ | ein | ||
+ | diff -u syslog-ng syslog-ng.new | ||
+ | ergibt die folgende Ausgabe | ||
+ | < | ||
+ | --- syslog-ng | ||
+ | +++ syslog-ng.new | ||
+ | @@ -74,7 +74,7 @@ | ||
+ | echo -n " | ||
+ | if / | ||
+ | then | ||
+ | - start-stop-daemon --stop --signal 1 --quiet --exec " | ||
+ | + start-stop-daemon --stop --signal 1 --quiet --exec " | ||
+ | echo " | ||
+ | | ||
+ | else | ||
+ | </ | ||
+ | hinten wurde also die Meldung "not running" | ||
+ | diff -u syslog-ng syslog-ng.new > syslog-ng.patch | ||
+ | und auf allen passenden Systemen mit dem Befehl patch anwenden: | ||
+ | patch / | ||
+ | Der (erfolgreich) angewendete Patch wird nun nicht mehr benötigt. | ||
+ | </ | ||
+ | |||
+ | ====== regular expressions (RegEx, reguläre Ausdrücke) ====== | ||
+ | Ein [[wpde> | ||
+ | Sie werden als Filter oder Schablone in fast allen Programmiersprachen verwendet. | ||
+ | |||
+ | |||
+ | ===== Links ===== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Syntax ===== | ||
+ | |||
+ | RegExps: Zeichenketten können durch Kombinationen von Regulären Ausdrücken flexibel beschrieben werden: | ||
+ | |||
+ | ^ Kriterium ^ Regulärer Ausdruck ^ | ||
+ | | wirkt auf Ausdrücke am Zeilenanfang | < | ||
+ | | wirkt auf Ausdrücke am Zeilenende | $ | | ||
+ | | Null oder mehrere beliebige Zeichen | * | | ||
+ | | Null oder mehrere Zeichen (" | ||
+ | | Ein Zeichen | ? | | ||
+ | | wirkt auf a //oder// b | a< | ||
+ | | Ein oder kein Zeichen " | ||
+ | | Ein oder mehrere Zeichen (" | ||
+ | | Genau 5 " | ||
+ | | Zwischen 6 und 12 " | ||
+ | | Genau ein beliebiges Zeichen | . | | ||
+ | | Ein Zeichen aus dieser Menge | A-Z a-z 0-9 [aeiou] usw.... | | ||
+ | |||
+ | Die regulären Ausdrücke können mit (runden) Klammern gruppiert werden. | ||
+ | |||
+ | :!: spezielle Zeichen (wie $ oder \ selber) müssen mit \ " | ||