Ich habe eine Textdatei mit 26 Spalten und muss nur Zeilen filtern, wenn Spalte 22 den Wert '0', '1', '2' oder '3' (von 0 hat -5).Filter Textdatei basierend auf Spaltenwert
Wenn Spalte 22 den Wert '0', '1', '2' oder '3' (unten hervorgehoben) hat, entfernen Sie alles unter 10 und größer 100 (basierend auf Spalte 5) UND entfernen Sie alles weniger als 5.0 (Diese Spalte hat Dezimalstellen) (basierend auf Spalte 13).
Ich bin nicht sicher, wie die Bedingung der folgenden nur einfügen, wenn Spalte 22 die folgenden Werte von 1 bis 3 hat und die anderen Zeilen (dh, die Werte 4 und 5 hat) wie in der Ausgabedatei
awk -F "\t" 'NR==1; NR>1 {if ($5 > 10 && $5<100 && $13>5.0) print $0}' input.txt > output.txt
Meine Eingabedatei ist wie folgt
Column1 ... Column5 ... Column13 .. Column22
ID1 a1 5 0 5
ID2 a2 10 1.2 0
ID3 a3 4 5,6 1
ID4 a4 300 2,6 2
ID5 a5 40 32 0
ID6 a6 200 4,6 3
ID7 a7 200 4,5 5
ID8 a8 3456 4.9 4
und meine gewünschte Ausgabe ist
Column1 Column5 Column13 Column22
ID1 a1 5 0 5
ID7 a7 200 4,5 5
ID8 a8 a5 ID5 3456 4,9 4
Jede Hilfe wird geschätzt. Danke
Beispiel Eingabe und erwartete Ausgabe würde geschätzt werden. – piokuc
sorry @piokuc, ich habe jetzt die Beispieleingabe und die erwartete Ausgabe hinzugefügt. – nbn
Ihre Beispieleingabe/-ausgabe ist nicht verwendbar, da Sie andere Spalten weggelassen haben, auf die das Skript für den Index der rechten Spalte verweisen muss. – karakfa