imprimer champ spécifique à partir de la première ligne dans le fichier à l'aide de awk
J'ai un fichier (logins.txt) que j'ai besoin de faire dans un fichier qui n'affiche que la première et la dernière connexion la date/l'heure et de la dernière connexion la date/heure. L'logins.txt ressemble à ceci:
Feb 13 2:43 (login IP)
Feb 13 2:48 (login IP)
Feb 13 5:23 (login IP)
Feb 13 9:43 (login IP)
Feb 14 1:34 (login IP)
Feb 14 8:42 (login IP)
Feb 14 8:47 (login IP)
Je veux imprimer:
First Login: Feb 13 2:43
Last Login: Feb 14 8:47
Maintenant, gardez à l'esprit que je suis en utilisant un .awk fichier où j'ai tous mes awk états qui s'exécute logins.txt et fait un fichier différent avec ce que je veux imprimer.
La dernière connexion était facile. J'ai tout simplement mis:
END{
print "$1, $2, $3";
}
Qui imprime la dernière occurrence de ces champs.
Mais comment puis-je le faire avec la première occurrence?
EDIT:
Génial, en mettant NR==1 fonctionne mais j'ai BESOIN de ce BOUT de champ parce que j'en ai besoin ci-dessous d'autres trucs je veux imprimer. Comment dois-je les mettre en dessous de tout?
Aussi je veux l'imprimer comme ceci:
Blah blah blah blah blah blah blah blah
Blah blah blah blah blah blah blah blah
Blah blah blah blah blah blah blah blah
First Login: Feb 13 2:43 Last Login: Feb 14 8:47
Voici ma FIN avec des instructions d'impression,
NF==1 {a=$1; b=$2; c=$3;}
END{
print "Feed\t\t\tAccepted\tRejected\tCanceled";
print "-----------------------------------------------------------------";
print "swrinde:\t\t", accepted_sw"\t\t", rejected_sw"\t\t", canceled_sw"\t\t";
print "news.cais.net:\t\t", accepted_ne"\t\t", rejected_ne"\t\t", canceled_ne"\t\t";
print "\?:\t\t\t", accepted_un"\t\t", rejected_un"\t\t", canceled_un"\t\t";
print "\nStart Time = ", a, b, c RS "\tEnd Time =", $1, $2, $3;
}
OriginalL'auteur Fred Lohrman | 2013-02-20
Vous devez vous connecter pour publier un commentaire.
Qualifier un autre bloc avec
NR==1
:Résultats:
NR
est court pour le nombre de lignes. Voir ici. HTH.EDIT1:
Voici deux façons, en fonction de votre style. La première serait considérée comme plus correct:
Résultats:
EDIT2:
Exécuter votre script comme:
Contenu de
script.awk
:EDIT3:
Résultats:
Utiliser des variables pour stocker ce que vous souhaitez. Puis les imprimer quand vous en avez besoin. J'ai mis à jour ma réponse ci-dessus. HTH.
La première façon juste imprimé taches blanches et je ne peux pas faire la deuxième façon parce que j'ai besoin à la fois de la Première Connexion et de la Dernière Connexion à être en FIN de compte{} je ne vous remercie de votre aide!
Je pourrais avoir à le saisir différemment depuis que je suis en utilisant un fichier de script. Je sais que je ne mets pas 'awk' en avant lors de l'utilisation d'un fichier de script, mais est-il autre chose que je dois changer? Encore des flans à la Première Connexion. Aussi ne peut toujours pas mettre de côté par côté.
J'ai été en mesure de le faire descendre, merci pour votre aide Steve!
OriginalL'auteur Steve
testé ici
OriginalL'auteur Vijay
Également essayer d'utiliser une variable pour la dernière connexion, parce que pas tous les awk conserve les valeurs de champ dans la section de la FIN. Par exemple:
OriginalL'auteur Scrutinizer