生信Linux常用命令(更新中)

一、壓縮和解壓縮

1.“.tar.gz”結尾的文件: tar

????tar -cf newfile.tar file1 file2#將file1,file2文件打包到newfile.tar

????tar-zcvf/GSE66507tar.gz#解壓文件

????tar -xzvf test.tar.gz#將test.tar.gz文件解壓并提取里邊的文件

2.“.zip”結尾的文件: zip

????zip newfile.zip file1 file2#將file1,file2進行壓縮到newfile.zip內

????unzip newfile.zip#解壓

3.“.gz”結尾的文件: gzip

#將file壓縮為file.gz

????gzip file

#解壓

????gunzip file.gz

4.“.bz2”結尾的文件: bzip2

#將file壓縮為file.bz2并刪除源文件

????bzip2 file

#解壓

????bunzip2file.bz2

二、數據統計和處理

1.sort 將文本文件內容進行排序

參 數: -n/-g 將文件按數值大小從小到大排序(默認按ascii碼從小到大排序)

? ? ? ? ? ? ?-k按第num列內容對文件排序(默認按第一列)

? ? ? ? ? ? ?-r 反向排序

????sort file#對file文件按第一列內容ascii碼值從小到大排序并輸出。

????sort -n -k 3 file#對file文件按第3列內容數值大小從小到大排序。

????sort -nr -k1,2 file#對file文件按數值大小反向排序,優先考慮第一列,再考慮第二列

2.uniq 合并文件中相鄰的相同的行

參 數:-c 在每行第一列顯示該行重復次數

????????????-d 僅顯示有重復的行

????uniq -c file#合并相同的行,并統計每行重復次數,輸出到屏幕

????uniq -d file outfile#合并相同的行,并顯示file中有重復出現的行,輸出到outfile文件中

#########

3.wc 統計文件中字節數

參 數:-c 只統計字節數/Bytes數

????????????-w 只統計字數(單詞數)

????????????-l 只統計行數

????wc file#顯示文件file的字節數,字數,行數

????wc -l file#顯示文件file的行數

4.grep 查找文件中符合條件的行

參 數:-v 不匹配,顯示文件中不匹配string的行

????grep world file#查找文件中含有“world”的行

????grep -v world file#查找文件中不含有“world”的行

5.awk 對特定的行中特定的列進行操作

參 數:-F 指定列的分割符,可以使任意字符,默認按空白分割

????awk -F “:” ‘{print $1}’#按“:”來分割并打印出第一列

????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的值

6.sed 文本處理并可對文件進行編輯

參 數:-i 直接在原文件中修改(默認修改后屏幕輸出,原文件不變)

????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)

7.du 顯示目錄或文件的大小

參 數:-a 顯示目錄中個別文件大小

????????????-s 只顯示總計

????????????-h 以“K” ,“M” ,“G”為單位顯示

????du -sh ./#顯示當前目錄的大小

????du -ah --max-depth=1 dir#顯示dir目錄下所有文件大小,不包括下一級目錄

8.列出目錄內容:ls

????ls-I grep"^-"|wc-l#當前文件夾文件數目

9.查看文件內容:less

參 數:-S 每行不顯示長于屏幕寬度的字符(默認顯示在下一行)

????????????-N 顯示行號

????????????-e 顯示結束后自動離開?

????????????-f? 強制打開文件

????????????-i? ? 忽略搜索時的大小寫?

????less -SN file

10.顯示文件每行指定范圍的字符:cut

????cut -c 1-10 file#顯示文件file每行開頭的10個字符

????cut -f 1-10 file#顯示文件file每行開頭10列(以“\t”分割)

? ? cut -d “ ” -f 2#顯示文件file第二列(以空格分割)

11.man(查看指定的使用方法)

12.quota- uvs shift#當前存儲空間

13.后臺執行

????nohup sh XXX.sh 2>&1 &

? ? screen

14.后臺命令查看及殺死

????Isof +D HA sort

????kill-9進程號

15.刪除文件

rm:無法刪除"":目錄非空

16.文件獲取

paste、cat文件內容展示拼接

? ??cat 1.txt 2.txt #將不同文件按照先后順序接起來

? ??cat -n 1.txt #顯示行號cat-A1.txt #顯示文件所有信息,包括換行符$ 回車符^M(需特別注意win系統會多出回車符

? ??paste 1.txt 2.txt #可將不同個文件中的內容按照文件順序從左往右排起來

? ??paste -d ':'#指定":"為文件間的分隔符

? ??cat 1.txt | paste - - - #將文件內容從左往右排為3大列

17.ps顯示當前進程的狀態

pstree 該命令列出進程的樹狀關系圖

參數: -A?# 列出所有進程,按照進程ID排序

????????????-a/e# 顯示終端所有進程,包括其他用戶進程

? ? ? ????? -l?#長格式輸出類似top結果

? ? ? ? ? ? -u? 用戶名# 顯示指定用戶名進程? ? ?

? ? ? ? ? ? -x?# 顯示無控制的終端的進程

? ? ? ? ? ? ?-g? 組名?# 顯示一個組的使用情況

? ? ????? ? -H# 列出樹狀結構,表示程序間相互關系

? ? ? ????? -f# 顯示完整格式

? ? ? ????? -ef?#顯示所有進程信息,連同命令行

????????????常用組合: -aux? ? ? ? ? ? -lax? ? ? ? -fx? ? ? ? ? -ef

? ? ps 與grep 常用組合用法,查找特定用戶進程命令:

? ? ps -ef | grep? gu? ?

????jobs -l#可以查看當前終端生效的進程

????ps -ef | grep#進程關鍵字#查找指定進程格式

????ps -u root #顯示root進程用戶信息

18.文件比較diff cmp ,若三個以上則用diff3命令

????diff 1.fa 2.fa# 比較兩個文件差異 ,

????diff? 1.fa 2.fa? -c# 顯示成上下文比較的格式,!表示發生變化

????diff? 1.fa 2.fa? -u# 顯示合并比較的格式,—表示1文件刪除行,+表示2文件新增行

????cmp? 1.fa 2.fa# 標示出兩個文件第一個不同之處的字符和列數編號

三、對文件名的處理操作小技巧

1.只將fq文件的文件名輸出而去除文件路徑,若echo $i則會帶有路徑

????ls ~/wk/fq/clean/*fq | while read id ; do echo $(basename $id); done

2.只將fq文件的文件名輸出 , 刪除.sam的后綴

????ls ~/wk/fq/clean/*fq | while read id ; do echo $(basename $id '.sam' ); done

3.%刪除文件名?.?之后的所有后綴, (如果是${id%.*}則刪除最后一個.后的后綴)

????ls raw/fq/* | while read id ; do echo $(basename ${id%%.*});done

4.##刪除文件名?_?之前的所有前綴 , (如果是${id#*_}則刪除第一個_前的前綴)

????????ls raw/fq/* | while read id ; do echo$(basename ${id##*_});done

四、文件處理

1.命令協作管道 |

| 可將上條指令的結果輸入到下條指令進行操作

echo -n "123456789" | wc -m #去除換行符后統計123456789字符數

ps -aux | less# 將ps結果放在less中查看

head -5 a | tail -2#顯示a文件4、5行

五、命令行界面的一些常用快捷操作

????history 列出1000條歷史命令,再用!數字 執行歷史中對應數字的命令

????!S# 重新執行前面以S開頭的命令

????;# 可按順序從左向右完成多個命令操作,如cd? ../ ; ls? ? ? ? ?

? ? Ctrl + C# 終止當前操作,重新開命令行? ?

? ? Ctrl + L# 進行清屏操作

? ? Ctrl + Z#掛起命令(使用 bg 命令讓其在后臺繼續運行;使用 fg 命令恢復到前臺)

? ? Ctrl + 左右鍵#在單詞之間跳轉

? ? Ctrl + A#跳到本行的行首

? ? Ctrl + E# 跳到行尾

? ? Ctrl + U# 刪除當前光標前面的所有文字(還有剪切功能)

? ? Ctrl + K#刪除當前光標后面的所有文字(還有剪切功能)

? ? Ctrl + Y# 粘貼Ctrl + U或Ctrl + K剪切的內容

? ? Ctrl + W和Alt + D# 對于當前的單詞進行刪除操作,W刪除光標前面的單詞的字符,D則刪除后面的字符

? ? Alt + Backsapce#刪除當前光標后面的單詞

? ? \#代碼太長時利用? \ 可以將代碼分成多段? ? ? ?

? ? bc#自帶計算器,輸入scale=4則保留4位小數

六、單、雙引號區別

單引號:可以說是所見即所得:即將單引號內的內容原樣輸出,或者描述為單引號里面看到的是什么就會輸出什么。單引號''是全引用,被單引號括起的內容不管是常量還是變量者不會發生替換。

雙引號:把雙引號內的內容輸出出來;如果內容中有命令、變量等,會先把變量、命令解析出結果,然后在輸出最終內容來。雙引號""是部分引用,被雙引號括起的內容常量還是常量,變量則會發生替換,替換成變量內容。

不加引號:不會將含有空格的字符串視為一個整體輸出, 如果內容中有命令、變量等,會先把變量、命令解析出結果,然后在輸出最終內容來,如果字符串中帶有空格等特殊字符,則不能完整的輸出,需要改加雙引號,一般連續的字符串,數字,路徑等可以用。

使用規則:一般常量用單引號''括起即可,如果含有變量則用雙引號""括起,無變量無空格無特殊字符的連續字符串可不加引號

最大不同:單引號與雙引號的最大不同在于雙引號仍然可以保有變數的內容,但單引號內僅能是一般字符,而不會有特殊符號

grep ">" a.txt | wc -l #搜索文件中含有'>'的行,并統計行數

grep -c ">" a.txt?# 統計有'>'的行數, 等價于同上

grep -w "chr1" a.txt?# 搜索全詞精確匹配'chr1'的行,-w表示整個word都匹配上

grep -n "chr1" a.txt?#搜索含有字符'chr1'的行并列出行號

grep -vc "chr" a.txt?#統計不含'chr'的行數的個數

grep 'chr' a.txt | grep -v 'chrX'# 搜索文本中含有Chromosome的行并排除有Annotation 行? ? ?

grep -e "chrX" -e "chrY" a.txt?# 參數-e進行多項操作(指定多個匹配模式,只要符合一個都會被輸出)

grep -w "chr1" a.txt -A 2# 搜索全詞精確匹配'chr1'的行行并列出下面兩行。 -A表示after

grep -w "chr1" a.txt -B 2# 使用grep的-B選項,顯示匹配內容及其前n行。-B表示before。

grep -w "chr1" a.txt -C 2# 使用grep的-C選項,顯示匹配內容及其前n行和后n行。

ls /usr/bin/ | grep "\.py"?#搜索特定目錄下名字包含'.py'的文件('.'需要轉義'./')

ls /usr/bin/ | grep "\.py\b"? 或? "\.py$"# 搜索特定目錄中以'.py'結尾的文件( '\b'或'$'表示結尾)

ls /usr/bin/ | grep "^ht"#搜索特定目錄中以'ht'開頭的文件

grep 1[1-9]? a.txt?# 應用正則表達式搜索包含'11'-'19'的行

grep -vP "^\s*$" 1.txt?# 去除空白行

grep -P "^\d{11}$" 1.txt# 匹配含11位數字的行

七、sed (stream editor,流編輯器) (以每行為單位編輯)

注意sed結果默認為屏幕輸出,并不改變原來文件內容,常用>重定向保存修改文件

參數: -e 默認模式,一般用于多項修改,之后常用>重定向保存修改文件

????????????-i 在原文件上直接進行修改

????????????-n 安靜模式,僅顯示處理后的結果,常與p連用,只輸出發生更改的特定行

????????????-f 接腳本文件

sed? ?'s/NC/nc/g'? ?1.txt>2.txt# 對文件中的NC替換成nc并另存為,s表示替換,g表示全局,命令一般用' '括起來

sed? ?'s/A/a/2'? ?1.txt# 對文件中的每行第2個A替換成a

sed? ?'s/b/B/g;s/a/A/g'? ?1.txt# 替換b和a為大寫,同時進行多項操作可用`;`分隔開

sed? ?'1,5s/:/?/g'? ?2.txt# 只對文件的1至5行內容進行替換':'為'?'

sed? ?'1,5!s/:/?/g'? ?2.txt# 只對文件的1至5行內容不進行替換,!表示非

sed? ?'/>/!s/A/a/g'? ?gene.fasta# 對含有>的行不進行操作,其他行進行替換

sed? ?'/beat/,/ggle/s/o/O/g'? ?1.txt# 將含有'beat'和'ggle'字符行的中間行的'o'替換成'O',選擇條件之間用`/`和`,`隔開#?

sed常用的應用: 將fastq格式轉化為fasta格式zcatA.1.fq.gz|sed'0~4d'|sed'0~3d'|sed's/^@/>/1'|less

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容