Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| linux:textdateibehandlung [2006/11/17 21:29] – 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 \ " | ||