Zeilen aus Txt-Datei entfernen, wenn eine Spalte einen bestimmten Wert enthält

A

ArgonTheGas

Jungspund
Hallo,
ich habe folgendes Problem.
Ich erstelle mit Hilfe einer Shell eine Liste, die vier Spalten mit Zahlenwerten enthält. Wenn die letzte Spalte den Wert 0 enthält, möchte ich die Zeile entfernen und die Liste so kürzen. Ich habe dazu folgenden Codezeile:
Code:
cat list_1.txt awk '{if ($4!= 0) {print $0}}' > list_1.txt.woBorder
Leider enthält die Liste list_1.txt.woBorder nach wie vor die Spalte 4 mit dem Wert 0. Weiß jemand, was falsch ist?
VIelen Dank für die HIlfe.
Argon
 
grep -v sucht mir die Zeilen ohne 0 und schreibt sie in eine Datei. Ich möchte jedoch leider nicht alle Zeilen die eine 0 enthalten löschen, sondern nur, wenn die 0 in der vierten Spalte steht.
 
Du sagtest "letzte Spalte nicht 0" - und genau das macht obiges grep - ok, evtl, noch ein ; vor die 0 oder ein , - je nach verwendetem Spaltentrenner.

Solltest Du es komplexer brauchen - in Deinem Code oben fehlt zumindest min. 1 | nach dem cat...
 
Code:
 awk '{if ($NF!= 0) {print $0}}' <list_1.txt > list_1.txt.woBorder

NF steht bei awk für die Anzahl von Feldern bzw. den Index des letzten Feldes. $NF für den Inhalt des letzten Feldes.

Allerdings funkioniert bei mir auch Dein ursprünglicher Code - nach dem beheben des von marce angemerkten Pipe-Problems.

Zeig' mal die Eingabedatei(Code-Tags!)
 
Vielen Dank für die Antworten! Es hat tatsächlich einfach ein Pipe for dem awk gefehlt...
 
Dann hast Du dich parallel gleich mal für den useless-use-of-cat-award beworben :-)
 

Ähnliche Themen

Zeilen behalten, die Werte in einem bestimmten Bereich enthalten

Spalten einer Datei in neue Datei integrieren.

Bestimmte Zeilen einer Spalte addieren

Keine grafische Oberfläche (Debian Installation)

Wertebereich ersetzen mit sed

Zurück
Oben