GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von AWK zum Auswählen von Zeilen mit einem bestimmten Wert in einer bestimmten Spalte

Die Datei, auf der Sie das Skript ausführen, hat DOS-Zeilenenden. Es kann sein, dass es auf einem Windows-Rechner erstellt wurde.

Verwenden Sie dos2unix um es in eine Unix-Textdatei umzuwandeln.

Alternativ führen Sie es durch tr :

tr -d '\r' <input.txt >input-unix.txt

Verwenden Sie dann input-unix.txt mit Ihrem ansonsten korrekten awk Code.

Zum Ändern von awk Code anstelle der Eingabedatei:

awk -F, '$7 == "-99\r"' input.txt >output.txt

Dabei wird der Wagenrücklauf am Zeilenende berücksichtigt.

Oder,

awk -F, '$7 + 0 == -99' input.txt >output.txt

Dies erzwingt, dass die 7. Spalte als Zahl interpretiert wird, wodurch der Wagenrücklauf "entfernt" wird.

Ebenso

awk -F, 'int($7) == -99' input.txt >output.txt

würde auch den \r entfernen .


awk -F, '{if($7==-99)print $0}'

werde das tun...


Linux
  1. Verwenden Sie Notify-Send mit Cron?

  2. String-Ersetzung mit einem Wörterbuch?

  3. Zeilenumbruch mit Mc verwenden?

  4. Prozentwert mit GNU Diff

  5. Entferne ein bestimmtes Zeichen mit awk oder sed

AWK-Befehl in Linux mit Beispielen

Linux-awk-Befehl mit 10 Beispielen

So subtrahieren Sie Zeilen (Zeilen) mit AWK

Verwenden von awk zum Summieren der Werte einer Spalte basierend auf den Werten einer anderen Spalte

So extrahieren Sie einen Wert (in einer bestimmten Zeile und Spalte) aus einer Datei und weisen ihn einer neuen Variablen zu

Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)