2019-11-29【生信技能树】P9 Linux-10-文本处

2019-11-29  本文已影响0人  猫叽先森

【生信技能树】生信人应该这样学Linux
P9 linux-10-文本处理

Linux文本处理命令awkgrepsedpastecatdiffwcvim

文章:Identifying and Targeting Sporadic Oncogenic Genetic Aberrations in Mouse Models of Triple-Negative Breast Cancer.
PMID:29203461

ProjectID

微信搜索,关键词“SRA数据库的规律”,【生信技能树】公众号
【生信技能树】解读SRA数据库规律一文就够

网页点击下载RunInfo TableAccession List
R包SRAdb可以在R里完成同样的工作

head/tail/less/more 4个命令都可以查看文件内容
head #从头查看文件内容,默认显示最前面10行
tail #从文件末尾查看文件内容,默认显示最后10行
less #查看文件内容

more # 查看文件内容

grep

cut # 按列查看文件
-参数-f,按列查看文件,后接想查看的列号
-参数-d,按特定符号分割文件

sed
awk

课程中命令记录

-----grep-----

$head SRR_Acc_List.txt > id
$mv SraRunTable.txt info
$mv SRR_Acc_List.txt allid
$grep SRR5933808 info
$grep -f id info # 参数-f,在文件info中查找文件id的内容
$grep -f id info |wc
$grep SR59338 id
$grep SR59338 id |wc
$grep -w SR59338 id
$wc id
$grep -c SR59338 id # 等同于grep SR59338 id |wc
$less /data/reference/gtf/hg19.gtf
$head /data/reference/gtf/hg19.gtf > tmp
$less tmp
$grep '^#' tmp # 正则表达式,匹配“以#开头”的内容
$grep -v '^#' tmp # 反向匹配,匹配“不以#开头”的内容
$which grep 
/bin/grep
$type grep
grep is aliased to 'grep --color=auto'
$alias del=rm #设置别名,使del可以执行rm命令功能,类似于“快捷方式”
$del tmp # 等同于执行rm tmp
$which del #不存在
$which rm
bin/grep

-----cut,sed-----

$less -SN info
$head -1 info | tr '\t' '\n' |cat -n
$cut -f 1,14-16,31 info #显示以下列[1]Assay_Type,[14]genotype,[15]mouse_number,[16]primary_tumor_index,[31]SRA_Study
$cut -f 14 info #显示第14列,[14]genotype
$cut -f 14 info | cut -d";" -f 1
$cut -f 14 info | tr ';' '\t'
$cut -f 14 info | sed 's/;/\t/g' # sed输入顺序sed 's///g',然后再填入;和\t

$head /data/reference/gtf/hg19.gtf
$less -S /data/reference/gtf/hg19.gtf
$ln -s /data/reference/gtf/hg19.gtf gtf #当前目录下的gtf软链接到/data/reference/gtf/hg19.gtf文件
$less gtf
$cut -f1 gtf #查看gtf文件的第1列
$cut -f1 gtf | sort -u #gtf文件第1列排序,并去掉重复值。u代表unique
$cut -f1 gtf | sort | uniq #效果等同于上一命令
$cut -f1 gtf | sort | uniq -c # gtf文件第1列排序,并统计出现次数
$cut -f1 gtf | sort | uniq -c | sort -k1,1 #按出现次数从小到大排序
$cut -f1 gtf | sort | uniq -c | sort -k1,1 -r#按出现次数从大到小排序
$cut -f1 gtf | sort | uniq -c | sort -k1,1 -r | head -20#按出现次数从大到小排序,显示前20行
$cut -f1 gtf | sort | uniq -c | sort -k1,1 -r | head -20 > tmp
$cat tmp

-----awk,paste-----

$awk '{print $1}' tmp #先输入awk '{}',再在花括号中输入执行语句
$awk '{print $2}' tmp
$awk '{print $1}' tmp | paste #报错
#paste用法,搜索关键词:shell统计文本的数字和 paste
$awk '{print $1}' tmp | paste -s #将所有内容输出为一行
$awk '{print $1}' tmp | paste -s -d + #将所有内容输出为一行,并以+号相连
$awk '{print $1}' tmp | paste -s -d + | bc #计算总和
$echo 1+2|bc #计算1+2
$less -S gtf
$cut -f 3 gtf
$cut -f 3 gtf | sort | uniq -c
$grep gene gtf | wc #想grep的是第3列的gene,但是在文件其他位置也存在gene
$grep -w gene gtf | wc
$history | awk '{print $2}' | sort | uniq -c
$history | awk '{print $2}' | sort | uniq -c | awk '{print $1"\t"$2}'
$history | awk '{print $2}' | sort | uniq -c | awk '{print $1"\t"$2}' | sort -k 1,1
$history | awk '{print $2}' | sort | uniq -c | awk '{print $1"\t"$2}' | sort -k 1,1 -n
##$awk '{}'
##$awk '{if () print}'
$awk '{if($3=="gene") print}' gtf | wc #查看gtf文件第3列是"gene"的内容,统计
$perl -alne '{print if $F[2] eq "gene"}' gtf | wc

$time awk '{if($3=="gene") print}' gtf | wc
$time perl -alne '{print if $F[2] eq "gene"}' gtf | wc
$time grep -w gene gtf | wc

gtf格式
第1列:染色体编号
第2列:属性
第3列:属性2
第4列:起始坐标
第5列:终止坐标

上一篇下一篇

猜你喜欢

热点阅读