Ich habe eine Datei, die ständig geschrieben / aktualisiert wird. Ich möchte die letzte Zeile finden, die ein bestimmtes Wort enthält, und dann die letzte Spalte dieser Zeile drucken.
Die Datei sieht ungefähr so aus. Weitere A1 / B1 / C1-Zeilen werden im Laufe der Zeit daran angehängt.
A1 123 456
B1 234 567
C1 345 678
A1 098 766
B1 987 6545
C1 876 5434
Ich habe versucht zu benutzen
tail -f file | grep A1 | awk '{print $NF}'
um den Wert 766 zu drucken, wird aber nichts ausgegeben.
Gibt es eine Möglichkeit, dies zu tun?
tail
das Ihnen raw bietet. Wenn Sie nicht wissen, dass es mit einer bestimmten Häufigkeit erscheinen wird, wäre es sichererawk '/A1/ {print $NF}' file | tail -n1
.Um die letzte Spalte einer Zeile zu drucken, verwenden Sie einfach $ (NF):
quelle
Ein Weg mit
awk
:quelle
awk
's kryptische Syntax :)Sie können dies ohne awk mit nur einigen Rohren tun.
quelle
Vielleicht funktioniert das?
quelle
Sie können alles tun in
awk
:quelle
Verwenden von Perl
quelle
perl -lane 'print $F[2] if /A1/' rayne.txt
awk -F " " '($1=="A1") {print $NF}' FILE | tail -n 1
Verwendung
awk
mit Feldtrennzeichen -F auf Leerzeichen "" setzen.Verwenden Sie das Muster
$1=="A1"
und die Aktion{print $NF}
. Dadurch wird das letzte Feld in jedem Datensatz gedruckt, in dem das erste Feld "A1" ist. Leiten Sie das Ergebnis in den Schwanz und verwenden Sie die-n 1
Option, um nur die letzte Zeile anzuzeigen.quelle
Führen Sie dies in der Datei aus:
und Sie werden bekommen, wonach Sie suchen.
quelle
Nicht das eigentliche Problem hier, könnte aber jemandem helfen: Ich habe
awk "{print $NF}"
die falschen Anführungszeichen notiert. Sollte seinawk '{print $NF}'
, damit sich die Shell nicht ausdehnt$NF
.quelle
ls -l | awk '{print $9}' | tail -n1
quelle