Zeilen aus einer Datei basierend auf bestimmten Werten in bestimmten Spalten ausschließen

Zeilen aus einer Datei basierend auf bestimmten Werten in bestimmten Spalten ausschließen

Ich habe eine Textdatei auf dem Linux-Server CentOS 7, die viele Einträge im folgenden Format enthält:

1234567890123456, 1, 17, cde, Test Test
1234567890123456, 2, 17, cde, Test Test
1234567890123456, 3, 17, cde, Test Test
1234567890123456, 4, 17, cde, Test Test
1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
1234567890123456, 1, 17, cde, Test Test

welchen Befehl soll ich zum Entfernen verwenden

1, 17
2, 17
3, 17
4, 17

also sollte das Ergebnis sein

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test

Antwort1

awkAnsatz:

awk -F, '!($2<5 && $3==17)' file

Die Ausgabe:

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test

  • -F,- Feldtrennzeichen

  • $2, $3- stellen das 2. bzw. 3. Feld dar

Antwort2

Um genau diese Werte auszuschließen, machen Sie sich die Gemeinsamkeit zunutze, dass der Ausschluss von Feld 3 immer „17“ ist:

awk -F, '!($3 == 17 && ($2 == 1 || $2 == 2 || $2 == 3 || $2 == 4))' < input > output

verwandte Informationen