Imprimer deuxième de la dernière colonne/champ dans awk
Je veux imprimer la dernière seconde colonne ou champ en awk. Le nombre de champs est variable. Je sais que je devrais être en mesure d'utiliser $NF
mais vous ne savez pas comment il peut être utilisé.
Et cela ne semble pas fonctionner:
awk ' { print ( $NF-- ) } '
NF
est le dernier champ de l'indice,$NF
est la valeur du dernier champ- qui fait sens aujourd'hui. c'est pourquoi le dollar en dehors de la parenthèse fonctionne je suppose
Vous devez vous connecter pour publier un commentaire.
Devrait fonctionner
'
!awk -F '.' '{print $(NF-2)}'
$(..)
invoque une commande dans un shell interne est exécuté selon le shell que vous utilisez. Vous pouvez contourner ce problème en utilisant$ (NF-1)
au lieu de$(NF-1)
.Petit plus pour Chris Kannon " accepté réponse: n'imprimez que si il y a réellement une seconde de la dernière colonne.
C'est plus simple:
La raison pour laquelle l'origine
$NF--
n'a pas de travail est parce que l'expression est évaluée avant la diminution, alors que mon préfixe de décrémentation est effectuée avant l'évaluation.Vous n'étiez pas loin du résultat! Ce n':
Ce décrémente le nombre de champs dans un, de sorte que
$NF
contient l'ancien avant-dernier.Test
Nous allons générer des nombres et de les imprimer sur des groupes de 5:
Laisser d'impression de l'avant-dernière sur chaque ligne:
Perl solution similaire à Chris Kannon awk solution:
Ces options de ligne de commande sont utilisés:
n
boucle autour de chaque ligne du fichier d'entrée, ne pas imprimer automatiquement chaque lignel
supprime les retours à la ligne avant le traitement, et ajoute dans de retour aprèsa
autosplit mode split lignes d'entrée dans le@F
tableau. Par défaut, la séparation d'espacese
exécuter le code perlLa
@F
autosplit tableau commence à l'indice [0] alors que awk champs de commencer avec $1.$#F
est le nombre d'éléments dans@F
$F[-2]
Avez-vous essayé de démarrer à partir de la droite vers la gauche en utilisant le rev commande ?
Dans ce cas, il vous suffit d'imprimer la 2ème colonne:
Première décrémente la valeur et de l'imprimer -
OU
Si vous avez beaucoup de colonnes et que vous voulez imprimer tous, mais pas les trois cloumns dans le dernier, alors cela pourrait aider
awk '{ $NF="";$(NF-1)="";$(NF-2)="" ; print $0 }'