zoukankan      html  css  js  c++  java
  • Linux:显示特定字符所在的行,并统计特定字符之间的行数差(grep, awk)

    举个例子,我想计算>开头的行之间的行数差距,如下截图,>开头的行分别在第1、8、18、25、32行。因此,第1、8、18、25、32行之间的行数差为7、10、7、7。

    使用如下命令即可完成:
    grep -n ">" file | awk 'NR==1{tmp=$1;print $1}NR>1{print $1-tmp;tmp=$1}'

    其中,file指的是截图的文件;
    grep -n ">" 指的是显示包含>字符的行数N;
    awk 后面的命令指的是计算N-(N-1),即我们所需的行数差;

    结果如下所示:

    如果是多个文件的话(以fa结尾),可以考虑来个循环:

    for i in *.fa; do
    echo $i
    grep -n ">" $i | awk 'NR==1{tmp=$1;print "'$i'"}NR>1{print $1-tmp;tmp=$1}'  >>  test
    done
    

    效果如下:

  • 相关阅读:
    案例分析
    202103226-1 编程作业
    阅读任务
    准备工作
    结对作业
    案列分析
    202103226-1 编程作业
    《构建之法》有感
    准备工作
    案例分析作业
  • 原文地址:https://www.cnblogs.com/chenwenyan/p/14298509.html
Copyright © 2011-2022 走看看