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
效果如下:
本文来自博客园,作者:橙子牛奶糖(陈文燕),转载请注明原文链接:https://www.cnblogs.com/chenwenyan/p/14298509.html