2013-03-12 4 views
17

Ich muss eine Spalte aus einer Nur-Text-Datei entfernen. Ich denke, das könnte mit der Umkehrung des Schnittbefehls geschehen. Ich meine, so etwas wie diese:Wie verwende ich den Befehl cut in bash, um alle Spalten außer den angegebenen anzuzeigen?

Wenn dies meine Datei ist:

01 Procedimiento_tal retiro aceptado 
01 tx1 
01 tx2 
01 tx3 
02 Procedimiento_tal retiro rechazado 
02 tx1 
02 tx2 
02 tx3 
03 Procedimiento_tal retiro aceptado 
03 tx1 
03 tx2 
03 tx3 

Was kann ich tun, um die erste Spalte mit Schnitt zu entfernen und den folgenden Text in bash erhalten ?:

Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro rechazado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 

Vielen Dank im Voraus

Antwort

35

mit cut:

cut -d ' ' -f 2- input-file 

sollte tun, was Sie wollen.

+0

Danke, es funktioniert :) – Herman

+1

kann nicht genug genug ... – hovanessyan

15

infile mit ' ' als Trennzeichen (-d) und setzen Felder (-f) 2 ab (2-) in file zu lesen:

cut -d' ' -f2- infile > file 

man cut Optionen für mehr sehen.

N.B: Dies ist nicht -spezifisch.

+0

Upvote aufgrund Ihrer Erklärung. –

+1

Sehr hilfreiche Erklärung! – ayaz

4

GNU Coreutils Cut unterstützt die --complement Flagge. Also, wenn Sie diese Version von Schnitt verwenden, können Sie sagen:

cut --complement -d' ' -f1 infile 

Ausgang:

Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro rechazado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
+0

Woow danke Thor, ich werde mein Skript zu diesem ändern. Ich schätze deine Hilfe sehr. – Herman

1

Hier ist ein Befehl, das funktioniert, und das ist ein bisschen kürzer als jeder:

cut -b 4- input-file 

-b steht für Byte und wählt die Bytes aus, die auf dem Bildschirm eingefügt werden.

4- ist ein Teil von -b und bedeutet, dass das vierte Zeichen jeder Zeile bis zum letzten Zeichen jeder Zeile ausgewählt wird. Der Schnittbefehl fügt dann die Auswahl auf dem Bildschirm ein.

Verwandte Themen