Linux常用操作手册
特殊符号作用
2 >&1
表示把标准错误重定向到标准输出。Linux终端用2
表示标准错误,1
表示标准输出。
文本内容操作
sort -u
: 去除重复行
awk
其处理为按行处理,每读一行操作一行
OFS
: 输出字段分隔符 (output field separtor)FS
: 输入字段分隔符 (field separtor)BEGIN
: 设置初始参数,初始化变量;BEGIN
块在程序开始时运行一次END
: 读完文件后做最终的处理- 其它
{}
:循环读取文件的每一行 $0
表示一行内容;$1
,$2
, …$NF
表示第一列,第二列到最后一列。NF (number of fields)
文件多少列;NR (number of rows)
文件读了多少行:FNR
当前文件读了多少行,常用于多文件操作时。a[$1]=1
: 索引操作,类似于python中的字典,在ID map
,统计
中有很多应用。
实例1:
# 计算第二列内容出现的次数
>>> tst.txt
ID Type
Pou5f1 aaa
Nanog aaa
Sox2 b
Tet1 c
Tet3 d
Myc b
awk 'BEGIN {OFS=FS="\t"} {if(FNR>1) a[$2]+=1;} END\
{print "Type\tCount"; for(i in a) print i, a[i];}' tst.txt
>>>OUT:
Type Count
aaa 2
b 2
c 1
d 1
实例2:
# 判断FASTQ文件中,输出质量值的长度是与序列长度不一致的序列ID
>>> tst_fasta.fasta
>aq1
ACGTCGACGACGAGAGGAGAGGAGCCCTCTCGCCCGCCCTACTACCACCCACACACAACACAAGTGT
+
FFFFFFA$A#$$AFEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
>aq2
ACGTCGACGACGAGAGGAGAGGAGCCCTCTCGCCCGCCCTACTACCACCCACACACAACACAAGTGT
+
FFFFFF$A#$$AFEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
cat tst_fasta.fasta |\
awk '{if(FNR%4==1) ID=$0; else if(FNR%4==2) seq_len=length($0); \
else if(FNR%4==0) {quality_len=length($0); if(seq_len!=quality_len) print ID; }}'
>>>OUT:
aq2
实例3:
# RNAseq中筛选差异基因
deseq_gene.txt
>>>
ID log2fc padj
A 1 0.001
B -1 0.001
C 1 0.001
D 2 0.0001
E -0.51 0.051
F 0.1 0.1
G 1 0.1
awk '$3<0.05 || NR==1' deseq_gene.txt
>>>OUT:
ID log2fc padj
A 1 0.001
B -1 0.001
C 1 0.001
D 2 0.0001
# 这里用pandas再写一遍
# 注意下面的代码并没有跳过第一行的显示操作,pandas特性
import pandas as pd
data = pd.read_csv('deseq_gene.txt', delimiter='\t')
filtered_data = data[data['padj'] < 0.05]
filtered_data.to_csv('filtered_deseq_gene.txt', index=False, sep='\t')