Linux 些许知识
1、Linux下去掉^M的方法
①dos2unix filename
②sed -i 's/^M//g' filename
#注意:^M的输入方式是 Ctrl + v ,然后Ctrl + M
或者 替换, s/\r/\r/g
2、sort
功能说明:将文本文件内容进行排序
语 法:sort [-nkr]<filename>
参 数:-n/-g 将文件按数值大小从小到大排序(默认按ascii码从小到大排序)
-k <num> 按第num列内容对文件排序(默认按第一列)
-r 反向排序
Example :sort file 对file文件按第一列内容ascii码值从小到大排序并输出。
sort -n -k 3 file 对file文件按第3列内容数值大小从小到大排序。
sort -nr -k1,2 file 对file文件按数值大小反向排序,优先考虑第一列,再考虑第二列
3、uniq
功能说明:合并文件中相邻的相同的行
语 法:uniq [-cd] <file> [outfile]
参 数:-c 在每行第一列显示该行重复次数
-d 仅显示有重复的行
Example :uniq -c file 合并相同的行,并统计每行重复次数,输出到屏幕
uniq -d file outfile 合并相同的行,并显示file中有重复出现的行,输出到outfile文件中
4、awk
功能说明:对特定的行中特定的列进行操作
语 法:awk [-F] ‘(condition){operate}’ <filename>
参 数:-F 指定列的分割符,可以使任意字符,默认按空白分割
Example :awk -F “:” ‘{print $1}’ 按“:”来分割并打印出第一列
awk '/^S/{print ">""\n"}' ONTmin.gfa | fold > ONTmin_IT0.fasta ###. ^S 以S开头的那行
fold可以限制文件列宽
awk -F "\t" '{if($12 == 60){print $0}}' file. 输出12列等于60的所有行,¥0代表整行
awk ‘($1 > 100){print $0}’ 对第一列大于100的行整行输出
awk ‘($1 > 100){print $1”\t”$2}’ 对第一列大于100的行输出第一列和第二列的结果并以“\t”分割。
awk ‘($3~/world/){ x+= $1}END{print x}’ 对第三列匹配“world”的行的第一列求和,全部处理完之后输
出结果x的值
替换:
(1) 只把每行的第一个AAAA替换为BBBB
awk '{sub(/AAAA/, "BBBB"); print $0}' t.txt
(2) 把每一行的所有AAAA替换为BBBB
awk '{gsub(/AAAA/, "BBBB"); print $0}' t.txt
(3) 只在出现字符串CCCC的前提下,将行中所有AAAA替换为BBBB
awk '/CCC/ {gsub(/AAAA/, "BBBB"); print $0; next}' t.txt
(4) 不管是AAAA,还是CCCC,全部替换为BBBB
awk '{sub(/AAAA|CCCC/, "BBBB"); print $0}' t.txt
(5) 把所有以A开头,不管后面连续包含几个A的串替换成一个字符B
awk '{ gsub(/^A/, "B" ); print $0}' t.txt
5、sed
功能说明:文本处理并可对文件进行编辑
语 法:sed [-i] '{command}' <filename>
参 数:-i 直接在原文件中修改(默认修改后屏幕输出,原文件不变)
Example :sed -i ‘s/test/new_word/’ file 将file文件中的test字符替换为new_word
sed -i ‘/pattern/ s/ test/new_word/’ file 将file文件中匹配pattern字串的行进行替换操作
sed -i ‘/^$/ d’ file 将文件file中的空白行删除(d)
sed -i 1d file 删除file中第一行
参数 -n
sed -n 1p filename >new_file. ##打印文件的第一行
6、 conda 安装python3 环境
1 conda create -n python3.4 python=3.4. -n 为名字,可自定义 2 3 source activate python3.4。 即可激活python3.4 环境,若想退出 4 5 source deactivate 6 7 8 9 若在激活python3.4 时出现 10 11 CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. 12 13 则需要: 14 15 ##激活环境 16 17 source activate 18 19 ##退出环境 20 21 source deactivata 22 23 ###再次激活 24 25 conda activiate python3.4
7、 conda
1 安装package 2 conda install -n python3.4 numpy 3 如果不用-n指定环境名称,则被安装在当前活跃环境 4 也可以通过-c指定通过某个channel安装 5 更新package 6 conda update -n python3.4 numpy 7 删除package 8 conda remove -n python3.4 numpy 9 更新conda,保持conda最新 10 conda update conda 11 更新anaconda 12 conda update anaconda 13 更新python 14 conda update python 15 假设当前环境是python 3.4, conda会将python升级为3.4.x系列的当前最新版本
8、 conda 软件安装
1 conda create -n medaka -c conda-forge -c bioconda medaka 其中 -c :channels,若添加了bioconda,则可以不写
若在bioconda镜像中没有想要的软件,则对该软件进行搜索
conda search -t <software>
譬如:
1 $ anaconda search -t cnvnator 2 3 得到的检索结果如下: 4 5 Using binstar api site https://api.anaconda.org 6 Run 'anaconda show <USER/PACKAGE>' to get more details: 7 Packages: 8 Name | Version | Package Types | Platforms 9 ------------------------- | ------ | --------------- | --------------- 10 pwwang/cnvnator | 0.3.3 | conda | linux-64 11 : a tool for CNV discovery and genotyping from depth-of-coverage by mapped reads 12 Found 1 packages
通过上面的检索结果我们就知道目前只有唯一一个保存CNVnator的conda镜像,为pwwang,这是就可以通过指定刚才找到的镜像完成软件的安装了:
1 $ conda install -c pwwang cnvnator
- 列出conda已有的环境
1 conda info --envs
- 删除已有的环境
1 conda remove -n env_name --all
9、快速删除linux中大量文件夹
rsync是linux下文件同步和数据传输的命令。通过构造一个空文件夹并且和目标文件夹进行同步,就可以把目标文件夹的内容给删除了
1 # 假如要删除reads 这个文件夹 2 mkdir blanktest 3 rsync --delete-before -d blanktest/ reads
10、 Perl模块
(1)安装perl模块,可以选择
1 # 比如安装Hash::Merge 2 cpanm Hash::Merge
(1.2)手动安装
1 # 例子:从 CPAN(http://search.cpan.org/) 下载Net-Server模块0.97版的压缩文件Net-Server-0.97.tar.gz 2 3 tar -zxf Net-Server-0.97.tar.gz 4 cd Net-Server-0.97 5 perl Makefile.PL 6 make
(1.3) 安装完成后,输入
1 ## 以Logger::Simple为例子,若没反应,则表示没问题 2 perl -MLogger::Simple -e1
(2)列出linux系统上所有安装的模块
1 find `perl -e 'print "@INC"'` -name '*.pm'
(3)列出linux @INC所有的路径
1 perl -V
(4)若安装的perl模块不在 @INC,可将其移到@INC中,或者添加perl模块的路径到#INC
1 export PERL5LIB="path/your/model"