2015-06-03 79 views
0

我是AWK的新手。有誰知道如何使用awk打印出文件最後一個匹配的行號。 這裏的test.txt的文件內容的一小部分:AWK顯示最後匹配的行數

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

這是我迄今爲止 成功第一線使用的代碼:

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

但最後一行

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

它只打印出保持匹配行和文件的最後一行號。 如何獲得最後一場比賽的隊伍號碼? 請幫我一些建議。

+0

你想要的內容以及行號,或只是行號? –

回答

4

使用a = NR而不是a = $0(因爲它是你想要記住的行號,而不是行本身)。

除此之外,那就可以說是更awkish寫

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

{if(){}}是有點難看。

+0

非常感謝您的回覆!不能相信,我沒有看到它,即使它在我的鼻子下面。我將使用您的推薦,而不是醜陋的{if(){}} – shadowman13

+0

您可能希望'打印+ 0'始終打印一個數字,即使沒有行匹配。 –