这是我的datafile.txt
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
行
所以需要知道确切的行号和行号
答案 0 :(得分:2)
简单的awk可以为你做的工作
$ awk '/dave/{print NR}' input
2
4
9
10
它的作用
/dave/
匹配<{p>
/dave/
{print NR}
打印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