(持續整理)Linux-shell tricks for bioinformatics.
並且用shell來處理這些小事的時候,還有一個好處就是通過管道符將這些linux操作串聯以來,形成一套pipeline。 誠然,寫腳本也可以,但是用linux代碼更加符合自己對簡單,優雅的審美要求,所以告別dirty code,擁抱Shell。
因為突然想要將這些trick整理下來,而這些腳本可能零碎地存在於自己的筆記當中,所以會持續更新。
1. 將一個文件按行倒序排列,即將第一行變為倒數第一行,第二行變為倒數第二行,一次類推。
tac test.fastan
2. 對於Rfam資料庫下下來的noncoding RNAs的fasta文件,注釋信息就在fasta文件的header裡面,如果我們想要提取所有的sequence的注釋信息。Shell code如下:
grep "^>" rfam.fasta | tr -d ">" |le n
3. 用Trinity坐組裝的之後得到的轉錄組文件,我們要做注釋的話,有些header可能過長,所以我們要將header給截短些,僅保留最關鍵的信息。Shell code如下:
cut -f 1 -d " " trinity.fasta |le n
4. 統計fastq的所有鹼基的數目。
awk BEGIN{sum=0;}{if(NR%4==2){sum+=length($0);}}END{print sum;} your.fqn
5. SAM文件中根據某一行的數值進行篩選,並且保留header. 以RSV這種病毒為例。這種病毒有四條RNA,因此有五行header,保留header,再根據某行值進行過濾。
awk $3<1000 || NR <= 5 your.SAMn
6. 將fastq文件轉化為fasta。
sed /^@/!d;s//>/;N your.fq > your.fan
7. 當我們得到基因的注釋之後,得到了two column的基因注釋table, 但是裡面有很多NA值。但我們不想看到NA,怎麼辦呢。方法很多。
perl -ne print unlesss /NA/ filenawk {if(!/NA/){print $0}} filenawk $0 !~ /NA/ {print} file ngrep -v "NA" filensed -e /*NA*/d filen
8. 遞歸地查找當前目錄下所有以"fasta"為後綴的文件,統計其行數。
find . -name "*.fasta " | xargs wc -ln
9. 當你有兩個gene list的文件,要找出僅在gene.file2中存在的行,不在gene.file1中出現的gene用來做GO分析。
grep -Fxv -f gene.file1 gene.file2n
10. 在某個目錄下有很多文件,你想看看你最感興趣的基因名字出現在哪個文件里,文件很多,並且子文件夾還有很多文件,即在一個目錄下遞歸地查找匹配某字元串的文件。怎麼辦呢。
grep -Hrn "P53" .n
推薦閱讀: