I have a file (logins.txt) that I need to make into a file that only displays the first and last login date/time and the last login date/time. The logins.txt looks like this:
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)
I want to print:
First Login: Feb 13 2:43
Last Login: Feb 14 8:47
Now keep in mind I'm using an .awk file where I have all my awk statements in that executes logins.txt and makes a different file with what I want to print out.
The last login was easy. I simply just put:
END{
print "$1, $2, $3";
}
Which prints out the last occurrence of those fields. But how do I do it with the first occurrence?
EDIT: Awesome, putting NR==1 works but I NEED this in the END field because I need it below other stuff I want to print. How do I put it below everything? Also I want it to print like this:
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
Here is my END with print statements
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;
}
Qualify another block with NR==1
:
awk 'NR==1 { print "First Login:", $1, $2, $3 } END { print "Last Login:", $1, $2, $3 }' logins.txt
Results:
First Login: Feb 13 2:43
Last Login: Feb 14 8:47
NR
is short for number of rows. See here. HTH.
EDIT1:
Here's two ways, depending on your style. The first would be considered more correct:
awk 'NR==1 { a=$1; b=$2; c=$3 } { print "Blah" } END { print "First Login:", a, b, c RS "Last Login:", $1, $2, $3 }' logins.txt
awk 'NR==1 { x=("First Login:" FS $1 FS $2 FS $3) } { print "Blah" } END { print x RS "Last Login:", $1, $2, $3 }' logins.txt
Results:
Blah
Blah
Blah
Blah
Blah
Blah
Blah
First Login: Feb 13 2:43
Last Login: Feb 14 8:47
EDIT2:
Run your script like:
awk -f script.awk logins.txt
Contents of script.awk
:
NR==1 {
a=$1
b=$2
c=$3
}
{
print "Blah"
}
END {
print "First Login:", a, b, c RS "Last Login:", $1, $2, $3
}
EDIT3:
BEGIN { OFS="\t\t" }
NR==1 { a=$1; b=$2; c=$3 }
END{
print "Feed\t\t\tAccepted\tRejected\tCanceled"
print "-----------------------------------------------------------------"
print "swrinde:", accepted_sw, rejected_sw, canceled_sw
print "news.cais.net:", accepted_ne, rejected_ne, canceled_ne
print "?:\t", accepted_un, rejected_un, canceled_un
print "Start Time = " a FS b FS c
print "End Time = " $1 FS $2 FS $3
}
Results:
Feed Accepted Rejected Canceled
-----------------------------------------------------------------
swrinde:
news.cais.net:
?:
Start Time = Feb 13 2:43
End Time = Feb 14 8:47
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With