linux - grep 最后的,而不是第一次出现的一行

标签 linux grep

<分区>

我正在寻找一种方法来 grep 最后一次出现的行,例如运行

$grep "!" ibrav8_c11mc12/* 

返回:

ibrav8_c11mc12/MgO.scf.a=0.090.ecut=80.k=4.out:!    total energy              =    -608.35146103 Ry
ibrav8_c11mc12/MgO.scf.a=0.090.ecut=80.k=4.out:!    total energy              =    -608.35234197 Ry
ibrav8_c11mc12/MgO.scf.a=0.090.ecut=80.k=4.out:!    total energy              =    -608.35243673 Ry
ibrav8_c11mc12/MgO.scf.a=0.095.ecut=80.k=4.out:!    total energy              =    -607.63532091 Ry
ibrav8_c11mc12/MgO.scf.a=0.095.ecut=80.k=4.out:!    total energy              =    -608.28250682 Ry
ibrav8_c11mc12/MgO.scf.a=0.095.ecut=80.k=4.out:!    total energy              =    -608.33000791 Ry
ibrav8_c11mc12/MgO.scf.a=0.095.ecut=80.k=4.out:!    total energy              =    -608.34213906 Ry
ibrav8_c11mc12/MgO.scf.a=0.095.ecut=80.k=4.out:!    total energy              =    -608.34395220 Ry
ibrav8_c11mc12/MgO.scf.a=0.095.ecut=80.k=4.out:!    total energy              =    -608.34488323 Ry
ibrav8_c11mc12/MgO.scf.a=0.095.ecut=80.k=4.out:!    total energy              =    -608.34496519 Ry
ibrav8_c11mc12/MgO.scf.a=0.100.ecut=80.k=4.out:!    total energy              =    -607.48596003 Ry
ibrav8_c11mc12/MgO.scf.a=0.100.ecut=80.k=4.out:!    total energy              =    -608.28313222 Ry
ibrav8_c11mc12/MgO.scf.a=0.100.ecut=80.k=4.out:!    total energy              =    -608.32079049 Ry
ibrav8_c11mc12/MgO.scf.a=0.100.ecut=80.k=4.out:!    total energy              =    -608.33433606 Ry
ibrav8_c11mc12/MgO.scf.a=0.100.ecut=80.k=4.out:!    total energy              =    -608.33598793 Ry
ibrav8_c11mc12/MgO.scf.a=0.100.ecut=80.k=4.out:!    total energy              =    -608.33685159 Ry
ibrav8_c11mc12/MgO.scf.a=0.100.ecut=80.k=4.out:!    total energy              =    -608.33690888 Ry

但我只想要每个文件的最后一次出现,有一个 -m 选项,

grep "!"  -m 1 ibrav8_c11mc12/* 

但这会返回每个文件中的第一次出现。我想要的,本质上是这个选项的相反

最佳答案

我的回答和get last line from grep search on multiple files几乎一模一样除了我需要稍微调整一下才能打印出文件名:

对于 ibrav8_c11mc12/*out 中的 f;做 GREP_RES=$(grep !$f | tail -1); echo $f $GREP_RES;完成

关于linux - grep 最后的,而不是第一次出现的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49811196/

相关文章:

java - 为什么我可以在 Docker 中运行 svn?

android - cmake 与 waf : mainly for c++ windows/linux and android

c - 为什么控制台上没有关于信号处理的输出?

javascript - 通过 Javascript 提取文本

regex - 在源代码中的函数调用中间删除换行符

linux - 如何使用 VNC Viewer 在没有 X 的情况下将 Oracle 12c 安装到数据库?

node.js - "Error: spawn mongoexport ENOENT"运行 dockerized Node 应用程序时

node.js - 使用 grep 提取 NodeJS 实例的永久 ID

linux - 显示以 1 或 0 结尾的所有行,并且 1 位于该行倒数第三个字符

regex - grep 有效域正则表达式