|
|
Zersplitten: (csplit)
$ csplit datei '/muster/+3'... # dritte Zeile nach Muster
$ csplit -k datei 100 {20} # bis zu 21 mal 100 Zeilen
csplit zerlegt eine Textdatei; die Stücke heißen xx00, xx01, usw. muster oder eine Zeilennummer legt den Anfang der zweiten,... Datei fest. {20} wiederholt das Muster oder die Zeilennummer als Anzahl Zeilen.
Senkrecht zerschneiden: (cut)
$ cut -c1-5,8-10,13- datei # nach Zeichenpositionen $ ... | cut -f3- -d: # : trennt Felder
cut gibt Ausschnitte von Textzeilen aus. Felder sind normalerweise durch Tabulatorzeichen getrennt.
Zusammenfügen: (join)
join hängt sortierte Textzeilen bei gleichem ersten Feld aneinander. Mit Optionen kann man beliebige Felder prüfen und in beliebiger Reihenfolge ausgeben.
$ cat 3.join a%a:first line b%a:second line c%a:third line $ $ cat 3.join.b a%b:first line b%b:second line d%b:third line $ join -t% 3.join 3.join.b a%a:first line%b:first line b%a:second line%b:second line $ join -t% -o1.2 2.2 3.join 3.join.b a:first line%b:first line a:second line%b:second line $ join -t% -o1.2 2.1 3.join 3.join.b a:first line%a a:second line%b
Zusammenfügen: (paste)
$ paste datei... # Dateien mit Tabulatorzeichen
$ ... | paste -d: datei -... # Datei und Eingabe mit :
$ ... | paste - - # Eingabe zweispaltig
$ paste -s -d'\t\n' datei # sukzessive Zeilen, je
# zwei mit Tabulatorzeichen
paste hängt positionsgleiche Zeilen aus verschiedenen Dateien aneinander. Die Zeichenliste bei -d dient dabei zirkulär als Trenner, aber am Schluß ist immer ein Zeilentrenner.
$ paste -d'^' 3.p* a%a:first line^a%b:first line^1 b%a:second line^b%b:second line^2 3 4 9 c%a:third line^c%b:third line^6 7 9 ^^1 $ paste -d'^' 3.paste 3.paste.b a%a:first line^a%b:first line b%a:second line^b%b:second line c%a:third line^c%b:third line $ paste -d'-----' 3.paste 3.paste.b a%a:first line-a%b:first line b%a:second line-b%b:second line c%a:third line-c%b:third line
Zerlegen: (split)
$ split -100 datei # je 100 Zeilen
split zerlegt eine Textdatei in Stücke xab, xab, usw. mit je gleich vielen Zeilen.
Zeichen ersetzen: (tr)
$ tr '[A-Z]' '[a-z]' <ein >aus # groß in klein $ tr -d '\15\32' <ein >aus # löschen: return und control-Z $ tr -cs '[A-Z][a-z]' '[\12*]' # ein Wort pro Zeile $ tr -cs '[A-Z][a-z]' '\12' # ein Wort pro Zeile [Berkeley]
tr ersetzt einzelne Zeichen: Zeichen in erstem Argument durch Zeichen in gleicher Position in zweitem Argument.
-c komplementiert erstes Argument, -d löscht statt zu ersetzen, -s gibt vielfache Zeichen im zweiten Argument nur einmal aus.
|
|
Last modified 03/July/97