181 votes

Impression de la dernière colonne d'une ligne dans un fichier

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 à quelque chose comme 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 produit.

Y a-t-il un moyen de le faire ?

2voto

Thor Points 13562

Vous pouvez faire tout cela en awk :

<file awk '$1 ~ /A1/ {m=$NF} END {print m}'

2voto

stack0114106 Points 2726

Utilisation de Perl

$ cat rayne.txt
A1 123 456
B1 234 567
C1 345 678
A1 098 766
B1 987 6545
C1 876 5434

$ perl -lane ' /A1/ and $x=$F[2] ; END { print "$x" } ' rayne.txt
766

$

1voto

JimBob Points 11

awk -F " " '($1=="A1") {print $NF}' FILE | tail -n 1

Utilice awk avec séparateur de champs -F est remplacé par un espace " ".

Utiliser le modèle $1=="A1" y action {print $NF} Cela imprimera le dernier champ de chaque enregistrement dont le premier champ est "A1". Dirigez le résultat vers la queue et utilisez la commande -n 1 pour n'afficher que la dernière ligne.

1voto

delucasvb Points 901

Il ne s'agit pas du problème réel, mais cela pourrait aider quelqu'un : Je faisais awk "{print $NF}" , noter les mauvais guillemets. Il faudrait awk '{print $NF}' afin que la coquille ne se dilate pas $NF .

0voto

Aziz Points 1

Exécutez cette opération sur le fichier :

awk 'ORS=NR%3?" ":"\n"' filename

et vous obtiendrez ce que vous cherchez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X