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