2014-11-25 70 views
-2

這裏是一個例子我datafile.txtsed awk grep?爲找到確切的行號

jones 
dave 
mike 
dave 
nathan 
ben 
james 
jim 
dave 
dave 
jones 
bill 
john 

我使用grep來查找字符串dave這是很好的

grep "dave" datafile.txt >> duplicate.txt 

我需要找到哪行#這個字符串dave被發現

第一個匹配dave在線#2
未來dave上線#4
未來dave上線#9
未來dave上線#10

2nd查詢找到最後一次出現

這樣的行數第一場比賽是0
第二場比賽是在2線路
第三場比賽是後5
第四場比賽是後1

因此需要知道確切的行數以及行號

回答

2

簡單的awk能爲你

$ awk '/dave/{print NR}' input 
2 
4 
9 
10 
做的工作

它所做的

  • /dave/就行

  • {print NR}匹配/dave/打印NR,行號。

而且

$ awk '/dave/{print prev?NR-prev:0; prev=NR}' input 
0 
2 
5 
1 

它能做什麼?

  • prev變量包含了相匹配的/dave/

  • prev?NR-prev:0如果prev被設定,然後打印NR-prev前一行別的打印0

  • prev=NR設置prev作爲當前NR