我如何获取关键字匹配的最后一次出现| Linux |

我如何获取关键字匹配的最后一次出现| Linux |

我有一个正在实施的场景

仅获取找到的匹配关键字的最后一次出现

例如 :我有一个名为 demo.txt 的文件包含大量数据

egrep -in '<NAME ="ABC_DEF_GHI">' /d/demo.txt

Line Number 11 : <NAME ="ABC_DEF_GHI">
Line Number 12 : <NAME ="ABC_DEF_GHI">
Line Number 34 : <NAME ="ABC_DEF_GHI">
Line Number 46 : <NAME ="ABC_DEF_GHI">
Line Number 67 : <NAME ="ABC_DEF_GHI">
Line Number 78 : <NAME ="ABC_DEF_GHI">

但我想获取匹配的关键字的最后一次出现<NAME ="ABC_DEF_GHI">

输出应该只是

Line Number 78 : <NAME ="ABC_DEF_GHI"> -> as its last occurrence

我尝试了下面的代码不起作用

tail -f -n 1 /d/demo.txt | egrep -in '<NAME ="ABC_DEF_GHI">'

答案1

tail后面的事grep

egrep -in '<NAME ="ABC_DEF_GHI">' /d/demo.txt | tail -1

当您搜索文字字符串而不是扩展正则表达式时,我建议fgrep使用egrep.

fgrep -in '<NAME ="ABC_DEF_GHI">' /d/demo.txt | tail -1

答案2

为了避免grep在整个文件上运行,请将其反转并获取第一次出现的位置:

tac file | egrep -in -m1 'pattern'

相关内容