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