您正在查看: Shell 分类下的文章

生物信息中常用的Linux命令(二)

Overview

做项目时出现过某些蛋白质序列出现O或者X等情况,导致计算出的PSSM矩阵也有问题。今天又遇到这种情况,在比对文件的时候,用到了两条文件操作的linux命令,记录一下。其他更多的内容参考之前Chris写的另一篇文章生物信息中常用的Linux命令

1. 按顺序合并文件

普通的合并文件可以直接用一个cat命令,而按顺序合并多个文件必须遍历这些文件,逐个合并。命令如下:

for ((i=1;i<=k;i++))do echo fileName$i;done | xargs -i cat {} >> newFileName

2.比较两个文件的区别

diff的不加参数的基本命令最常用。

diff file1 file2

参考资料

Shell脚本中使用for循环和cat命令实现按顺序合并文件

生物信息中常用的Linux命令

Overview

一直想把常用的命令搜集起来,以便平时用到的时候查阅,可惜一直没抽出来时间专门整理下。最近在做序列的特征提取和多个特征文件合并时,频繁使用到了一些命令,干脆一并整理到这里,以后边用边添加整理新的命令。

这里的linux命令主要在MAC 10.9.5Ubuntu 14.04下测试,涉及到平台差异性的时候,会尽量指出来,没有区分的话就表示两种平台下都可以使用。如果仍有没涉及到的问题,欢迎补充~

1. 常规的shell命令

1.1 查看文件的前/后n行

  • Linux

    下面的命令显示文件名为filename的文件的前/后5行:

      head filename -n5
      tail filename -n5 
    

    设置-n后面的数字,可以指定要查看的行数。如果省略-n参数,则默认显示10行。
    另外,-n参数的位置是比较灵活的,而且后面的数值可以加一个空格区分,所以,下面几种形式都是可以的:

      head filename
      head -n5 filename
      tail -n5 filename
      head filename -n 5
      tail filename -n 5
    
  • Mac
    Mac下的head/tail命令是BSD平台的实现,-n参数必须在文件名前面,放在文件名后面会被当做一个新的文件名。如果省略-n参数,则默认也显示10行。
    下面几种形式都是可以的:

      head -n5 filename
      tail -n5 filename
      head -n 5 filename
      tail -n 5 filename
    

1.2 查看文件的行数

wc -l filename

上面的命令会把把名为filename文件的行数以及文件名本身一起列出来。有时候我们想要同时看很多个文件的行数。可以使用:

wc -l filename1 filename2

这条命令输出为:

281 filename1
281 filename2
562 total

分别为filename1,filename2的行数,以及他们行数的和。当然,也可以直接查看当前文件夹下所有的文件行数:

wc -l *

1.3 查看文件的列数

在提取完特征之后,检查特征文件的列数是必须要做的,所以查看文件列数的命令也非常常见:

cat filename | awk -F ',' '{print NF}' | head -n1

这里假定filename是以,分割的文件,如果是以空格或者别的标记分割的文件,可以自行修改
','中的符号。

另外,awk -F ',' '{print NF}'中输出的结果,实际上是每一行的列数,我们假定这里处理的是特征文件,因此每一行的列数都是相同的,所以我们只需要使用head -n1查看第一行的列数就可以了。

1.4 查看序列文件中的序列数

grep -c '>' filename

因为序列文件中每条序列都是以>开头的,因此统计>的个数就可以知道序列数目。

1.5 文件合并

  • 上下合并:

      cat file1 file2 > file3
      cat file1 file2 file3 > newfile
    

    很容易扩展到多个文件合并

  • 左右合并

      paste file1 file2 > file3
      paste file1 file2 file3 > newfile
    

    一样可以扩展到多个文件合并。

    默认情况下,paste合并文件之间使用空格或者tab分开,如果你合并的是csv文件,就需要显示指定用,分开:

      paste -d "," file1 file2 file3 > newfile
    

1.6 单个文件去掉重复的行

  • 重复的多行只留一行

      sort filename | uniq > newfile
    
  • 重复的行全部去掉,只留下文件中的非重复行

      sort filename | uniq -u > newfile
    

1.7 文件的交集,并集

下面的操作很容易可以扩展到多个文件。

  • 文件的并集(重复的行只保留一份)

      cat file1 file2 | sort | uniq > newfile
      cat file1 file2 file3 | sort | uniq > newfile
    
  • 取出两个文件的交集(只留下同时存在于两个文件中的文件)

      cat file1 file2 | sort | uniq -d > newfile
      cat file1 file2 file3 | sort | uniq -d > newfile
    
  • 删除交集,留下其他的行

      cat file1 file2 | sort | uniq -u > newfile
      cat file1 file2 file3 | sort | uniq -u > newfile
    

1.7 查看及关闭端口

通常在tomcat没能正常退出的情况下,8080端口就会被占用,这时就无法重新启动tomcat。因此经常需要查看端口使用情况,并在端口被占用时关闭端口。

Mac

  • 查看端口8080

      lsof -i:8080
    
  • 关闭8080

      kill -9 8080
    

参考资料