Awk Lösche Zeile, die Daten enthält

8

Ich möchte eine Zeile löschen, wenn sie einen angegebenen Wert enthält.

%Vor%

Wenn ich also eine Zeile löschen wollte, die 7 als drittes Feld enthält:

%Vor%     
user1017243 27.10.2011, 21:55
quelle

3 Antworten

15

Es sollte genug sein, um zu sagen

%Vor%

Beachten Sie, dass dies ein numerischer Vergleich ist und Sie Zeilen auslassen, in denen das dritte Feld beispielsweise "0.7e1" ist, aber es wird für die von Ihnen bereitgestellten Beispieldaten funktionieren.

    
William Pursell 27.10.2011, 22:01
quelle
8

löscht eine Zeile mit 7

%Vor%     
Kent 27.10.2011 22:02
quelle
6

Die anderen Antworten funktionieren. Hier ist warum

Awks Standard-Verarbeitungsmodell ist das Lesen einer Eingabezeile, die optional mit dieser Zeile übereinstimmt, und bei Übereinstimmung mit der Eingabe (optional). Die anderen Lösungen verwenden eine Negationsübereinstimmung, also werden Zeilen gedruckt, es sei denn wird die Übereinstimmung hergestellt.

In Ihrem Codebeispiel wird keine Negationsübereinstimmung verwendet: Es heißt "Wenn etwas wahr ist, tun Sie es". Da Sie die Eingabe löschen möchten, können Sie beim Drucken dieses Ziels den Ausdruck einfach überspringen.

%Vor%

IHTH.

    
shellter 27.10.2011 23:01
quelle

Tags und Links