J'ai un fichier qui est constamment écrit / mis à jour. Je veux trouver la dernière ligne contenant un mot particulier, puis imprimer la dernière colonne de cette ligne.
Le fichier ressemble à ceci. D'autres lignes A1 / B1 / C1 y seront ajoutées au fil du temps.
A1 123 456
B1 234 567
C1 345 678
A1 098 766
B1 987 6545
C1 876 5434
J'ai essayé d'utiliser
tail -f file | grep A1 | awk '{print $NF}'
pour imprimer la valeur 766, mais rien n'est sorti.
Y a-t-il un moyen de faire cela?
tail
vous donne. À moins que vous ne sachiez qu'il apparaîtra avec une certaine fréquence, il serait plus sûr de le faireawk '/A1/ {print $NF}' file | tail -n1
.Pour imprimer la dernière colonne d'une ligne, utilisez simplement $ (NF):
la source
Une façon en utilisant
awk
:la source
awk
's cryptic syntax :)Vous pouvez le faire sans awk avec juste quelques tuyaux.
la source
peut-être que cela fonctionne?
la source
Vous pouvez tout faire en
awk
:la source
Utiliser Perl
la source
perl -lane 'print $F[2] if /A1/' rayne.txt
awk -F " " '($1=="A1") {print $NF}' FILE | tail -n 1
À utiliser
awk
avec le séparateur de champ -F défini sur un espace "".Utilisez le modèle
$1=="A1"
et l' action{print $NF}
, cela imprimera le dernier champ de chaque enregistrement où le premier champ est "A1". Transformez le résultat en queue et utilisez l'-n 1
option pour n'afficher que la dernière ligne.la source
Exécutez ceci sur le fichier:
et vous obtiendrez ce que vous recherchez.
la source
Ce n'est pas le problème réel ici, mais cela pourrait aider quelqu'un: je faisais
awk "{print $NF}"
, notez les mauvaises citations.awk '{print $NF}'
Cela devrait être le cas , pour que le shell ne se développe pas$NF
.la source
ls -l | awk '{print $9}' | tail -n1
la source