shadowman13
shadowman13

Reputation: 3

AWK display the line number of last match

I'm new to AWK. Does anyone know how to print out the line number of last match of a file using awk. Here's a small part of the Test.txt file content:

CLOSE #140,value=140
WAIT = #14039,value=143
CLOSE #140,value=144
WAIT #0,value=155
WAIT = #14039,value=158
CLOSE #140,value=160

This is the code I used so far Success first line:

awk -F= '{if($NF >= 143 && $NF <= 158){print NR,exit}}' Test.txt

But for last line

awk -F= '{if($NF >= 143 && $NF <= 158){a=$0}} END{print a,NR}' Test.txt

It's only printed out the hold matching line and the last line number of the file. How can I get the line number of the last match? Please help me with some advice.

Upvotes: 0

Views: 1689

Answers (1)

Wintermute
Wintermute

Reputation: 44023

Use a = NR instead of a = $0 (because it's the line number you want to remember, not the line itself).

Apart from that, it would arguably be more awkish to write

awk -F= '$NF >= 143 && $NF <= 158 { a = NR } END { print a }' Test.txt

{if(){}} is a bit ugly.

Upvotes: 4

Related Questions