linux命令匯總

(先復習一下吧)

命令格式

快捷鍵

Ctrl + C:終止任務
Ctrl + Z:暫停任務(將一個正在前臺執(zhí)行的命令放到后臺,并處于暫停狀態(tài))
Ctrl + L:清屏
Ctrl + A:回到行首
Ctrl + E:回到行尾
Ctrl + D:注銷當前會話

進程管理

top #動態(tài)進程,q退出,查看所有用戶的運行進程
ps #靜態(tài)進程
jobs #查看后臺命令,命令正在當前終端運行
fg %n #將后臺的命令調(diào)至前臺繼續(xù)進行
bg %n #將后臺暫停的命令變成后臺運行
kill %n #終止后臺進程

解壓和壓縮

*.zip :zip程序壓縮的文件
*.gz :gzip程序壓縮的文件  gzip -d file.gz或gunzip file.gz
*.bz2 :bzip2程序壓縮的文件  bzip2 -d file.bz2
*.tar :tar程序打包的數(shù)據(jù),沒有壓縮過
*.tar.gz :tar程序打包的文件,其中并且經(jīng)過gzip的壓縮  tar -zxvf file.tar.gz
*.tar.bz2 :tar程序打包的文件,其中并且經(jīng)過bzip2的壓縮  tar -jxvf file.tar.bz2

壓縮:tar -jcvf filename.tar.bz2 要被壓縮的文件
查詢:tar -jtvf filename.tar.bz2
解壓縮:tar -jxvf filename.tar.bz2 -C 要解壓縮的目錄
僅打包:tar -cvf file.tar filename...

解壓

壓縮

vi編輯器

(1) 一般指令模式(command mode):以vi打開一個文件就直接進入一般指令模式了??梢允褂蒙舷伦笥野存I來移動光標,可以使用刪除字符或刪除整行來處理文件內(nèi)容,也可以使用復制、粘貼來處理文件數(shù)據(jù)。一般指令模式可與編輯模式及指令列模式切換,但編輯模式與指令列模式之間不可互相切換。

(2) 編輯模式(insert mode):在一般指令模式中無法編輯文件內(nèi)容。按下“i, I, o, O, a, A, r, R”等任何一個字母之后才會進入編輯模式,在畫面的左下方會出現(xiàn)INSERT或REPLACE的字樣,此時才可以進行編輯。如果要回到一般指令模式時,需要按下[Esc]鍵退出編輯模式。

(3) 指令列命令模式(command-line mode):在一般模式當中,輸入“: / ?”三個中的任何一個按鈕,就可以將光標移動到最底下那一行。在這個模式中,可以執(zhí)行搜索、保存、退出等動作。

Bash中的通配符和特殊符號

通配符:

*:代表0個到無窮多個任意字符
?:代表一定有一個任意字符
[]:代表一定有一個在括號內(nèi)的字符(非任意字符)。例如[abcd]代表了一定有一個字符,可能是a,b,c,d這四個任何一個
[ - ]:若有減號在中括號內(nèi)時,代表在編碼順序內(nèi)的所有字符。例如[0-9]代表0到9之間的所有數(shù)字
[^ ]:反向選擇,例如[^abc]代表一定有一個字符,只要是非a,b,c的其他字符就接受的意思

特殊符號:

#:批注符號,在后面的數(shù)據(jù)均不執(zhí)行
\:跳脫符號,將特殊字符或通配符還原成一般字符
|:管道
;:連續(xù)指令下達分隔符
~:用戶的家目錄
$:取用變量前導符
&:工作控制,將指令變成背景下工作
!:邏輯運算意義上的非
/:目錄符號,路徑分隔的符號
>、>>、<、<<:數(shù)據(jù)流重導向
‘’:單引號,不具有變量置換的功能($變?yōu)榧兾谋荆?“”:雙引號,具有變量置換的功能($可保留相關(guān)功能)
``:兩個`中間為可以先執(zhí)行的指令,亦可使用$()
():在中間為子shell的起始與結(jié)束
{}:在中間為命令區(qū)塊的組合

正則表達式

正則表達式(Regular Expression,RE)是通過一些特殊字符的排列,用以搜尋/取代/刪除一行或多行文字字符串, 簡單的說,正則表達式就是用在字符串的處理上面的一項表示式。正則表達式并不是一個工具程序,而是一個字符串處理的標準依據(jù),是一種字符串的表示方法。如果你想要以正則表達式的方式處理字符串,就得使用支持正則表達式的工具程序,這類工具程序很多,例如vi、sed、awk等等。但是例如cp、ls等指令并未支持正則表達式, 所以就只能使用bash自己本身的通配符。

注意:正則表達式的特殊字符與命令行中輸入指令的通配符并不相同。例如,在通配符當中的*代表的是0~無限多個字符的意思,但是在正則表達式當中,*則是重復0到無窮多個的前一個RE字符的意思。

基礎的正則表達式字符:^ $ . * [list] [n1-n2] [^list] \{n,m\}
延伸的正則表達式字符:\? \+ T\|t gd\|good g(la|oo)d A(xyz)+C

正則表達式特殊符號:
[:alnum:] 字母數(shù)字
[:alpha:] 字母
[:blank:] 空格制表符
[:digit:] 數(shù)字
[:lower:] 小寫字母
[:upper:] 大寫字母
[:punct:] 標點
[:space:] 所有空白符(換行符和回車)

cat chipfile | grep '[[:alpha:]]'  #cat chipfile | grep [[:alpha:]]
cat chipfile | grep ^[[:digit:]]
cat chipfile | grep '[DP]'  #cat chipfile | grep [DP]
cat chipfile | grep '5\+'  #需要加引號,匹配到5 “>=1次”
cat chipfile | grep '5\{2\}'  #匹配到5 “2次”,實際上5555也會匹配到
cat chipfile | grep -w '5\{2\}'  #精確匹配,不會匹配到5555
cat chipfile | grep '5\?'  #能匹配到?jīng)]有5、有5的所有行,包括5555
cat chipfile | grep '98\?7'  #能匹配到97、987
cat chipfile | grep 'ChIP\|DNA'  #cat chipfile | grep -E 'IP|DNA'

less

less -NS chipfile
zless file.gz

wc

wc  [-lwm] 

-l :行數(shù)
-w :字符串數(shù) (英文單字)
-m :字符數(shù)

cut

cut  -d  '分隔字符'  -f  fields 
cut  -c  字符區(qū)間 

-d :后面接分隔字符。默認是 \t
-f :依據(jù) -d 的分隔字符將一段信息分割成為數(shù)段,用 -f 取出第幾段(fields)
-c :以字符 (characters) 的單位取出固定字符區(qū)間
-b 表示字節(jié);-c 表示字符;-f 表示定義字段。
N-M:從第N個字節(jié)、字符、字段到第M個(包括M在內(nèi))字節(jié)、字符、字段。例如cut -f 1,3-5。

sort

sort [-fbMnrtuk] [file or stdin]

-n :使用純數(shù)字進行從小到大排序 (默認是以文字型態(tài)來排序的)
-r :反向排序
-t :分隔符,默認是用 [tab] 鍵來分隔
-k :以那個區(qū)間 (field) 來進行排序的意思
-V :字符串中含數(shù)值時,按數(shù)值從小到大排序
-f :忽略大小寫的差異,例如 A 與 a 視為編碼相同
-b :忽略最前面的空格符部分
-u :就是 uniq ,相同的數(shù)據(jù)中,僅出現(xiàn)一行代表
每次使用 -k選項都要帶上指定列的范圍(start, end),例如-k2,2n;sort -k1,1 -k2,2nr test.bed

uniq

uniq  [-ic]

-c :進行計數(shù)
-i :忽略大小寫字符的不同

tr

-d :刪除指定字符
-s :縮減連續(xù)重復字符

cat chipfile | tr 'C' 'c'
cat chipfile | tr 'CI' 'ci'
cat chipfile | tr -d ChIP  # Chromatin變成了romatin

grep

grep  [-acinv] [-A] [-B] [--color=auto]  '搜尋字符串'  filename 

-n :輸出行號
-v :反向選擇,即顯示出沒有 '搜尋字符串' 內(nèi)容的那一行
-c :計算找到 '搜尋字符串' 的次數(shù)
-w :精確查找某個關(guān)鍵詞(word)
-e :指定多個匹配模式
-f :從指定文件中讀取要匹配的模式
-i :忽略大小寫
-o :只抽離輸出匹配的部分
--color=auto :將找到的關(guān)鍵詞部分加上顏色顯示
-A :后面可加數(shù)字,為 after 的意思,除了列出該行外,后續(xù)的 n 行也列出來。-A2
-B :后面可加數(shù)字,為 befer 的意思,除了列出該行外,前面的 n 行也列出來。-B1
-C :指定輸出包括匹配到的前后多少行
-E :指定支持擴展表達式,或者用 egrep命令

grep 'ChIP' chipfile  #cat chipfile | grep ChIP
grep -n 'ChIP' chipfile
grep -w 'ChIP' chipfile  #精確查找單詞,'ChIP-seq'不算'ChIP'
grep -c 'ChIP' chipfile  #找到'ChIP'的行數(shù),不是次數(shù)
grep -i 'chip' chipfile

sed



在指定行后增加一行 sed '1,2a 555'
在指定行前增加一行 sed '1,2i 555'
刪除某幾行 sed '2,5d'
刪除匹配行 sed '/Welcome/d'
改變指定行的內(nèi)容 sed '2c 000'
替換匹配到的內(nèi)容 sed 's/is/IS/g'
替換指定行匹配到的內(nèi)容sed '4s/ee/EE/g'
字符一對一轉(zhuǎn)換 sed 'y/abcd/ABCD/'
打印出指定行 sed -n '2~4p'

cat chipfile | sed '1,2a 555'|cat -n
cat chipfile | sed '1,2i 555' | cat –n
cat chipfile | sed '2,5d' | cat -n
cat chipfile | sed '/IP/d ' | cat -n 
cat chipfile | sed '2c 000 ' | cat -n
cat chipfile | sed 's/DNA/dna/g' | cat -n
cat chipfile | sed 'y/DNA/dna/' | cat –n
cat chipfile | sed -n '16,20p'
cat chipfile | sed -n '/\./p'
cat chipfile | sed -n '/^5/p'
cat chipfile | sed -n '/5\+/p'
cat chipfile | sed -n '/5\{3\}/p'

awk

awk  '條件類型1{動作1}  條件類型2{動作2}  ...'  filename 

特點:
(1) 相較于sed常常作用于一整行的處理,awk則比較傾向于將一行分成數(shù)個字段來處理,默認的字段分隔符為空格鍵或[tab]鍵。
(2) 在awk的括號內(nèi),每一行的每個字段都是有變量名稱的,那就是$1, $2, ...,而$0則代表一整行。
(3) awk后續(xù)的所有動作是以單引號括住的,所以awk的格式內(nèi)容如果想要以print打印時,非變量的文字部分都需要使用雙引號來定義。
(4) awk在{}內(nèi)的動作,如果有需要多個指令輔助時,可利用分號 ; 間隔,或者直接以[Enter]按鍵來隔開每個指令。
(5) 在awk當中,變量可以直接使用,不需加上$符號。

處理流程:

$ awk  'BEGIN{動作}  pattern{動作}  END{動作}'

(0) 在所有處理操作之前,先讀取BEGIN關(guān)鍵字標識起來的代碼段。
(1) 讀入第一行,并將第一行的資料填入$0, $1, $2....等變量當中。
(2) 依據(jù)"條件類型"的限制,判斷是否需要進行后面的"動作"。
(3) 做完所有的動作與條件類型。
(4) 若還有后續(xù)的行,則重復上面1-3的步驟,直到所有的數(shù)據(jù)都讀完為止。
(5) 最后執(zhí)行END代碼段,在END塊中完成最終結(jié)果的輸出。

變量:

awk  '{print $9,$10}'  #分隔符默認空格和制表符
awk  '{print $9 “\t” $10}'  #以\t為分隔符輸出
awk  '{print $9 $10}'  #沒有分隔符
awk  -F  '\t'  '{print $9}'
awk  '/UTR/{print $9,$10}'
awk  'BEGIN{print "find UTR"}  /UTR/{print $9,$10}'

cat chipfile | sed -n '16,20p' | awk '{print $1,$3}'  #輸出的分隔符為空格
cat chipfile | sed -n '16,20p' | awk '{print $1"\t"$3}'  #以制表符為分隔符輸出
cat chipfile | sed -n '16,20p' | awk '{print $1 $3}'  #沒有分隔符
cat chipfile | awk -F '.' '{print $1}'  #cat chipfile | awk -F . '{print $1}'
cat chipfile | awk '/\./{print $0}'  #輸出匹配有.的行,如果不加\將視為正則表達式
cat chipfile | awk '/^5/{print $0}'
cat chipfile | awk '/5+/{print $0}'
cat chipfile | awk '/5{3}/{print $0}'

內(nèi)建變量:

cat chipfile | awk '{print NR}'  #第n行
cat chipfile | awk '{print NF}'  #這一行有n列,即n個字段

運算字符:
算術(shù)運算:+, -, *, /, % (取余), ** (平方), int(x) (x的整數(shù)部分), log(x) (x的自然對數(shù))
邏輯運算:==, !=, <, >, <=, >=
與或非:&&, ||, !
模式匹配:a~b, a!~b

條件和循環(huán)語句:

內(nèi)置函數(shù):
tolower():字符轉(zhuǎn)為小寫
toupper() :字符轉(zhuǎn)為大寫
length():返回字符串長度
substr(s,i,j):返回s的i-j部分
split(s,x,d):根據(jù)分隔符d分隔數(shù)據(jù),賦值給x
sub(f,r,s):根據(jù)正則f從r中提取數(shù)據(jù)到s
sin():正弦
cos():余弦
sqrt():平方根
rand():隨機數(shù)

舉個栗子:

less -S Data/example.gtf | awk 'BEGIN{FS="\t";OFS="\t"} {gsub("gene","Gene",$3);print $0}' | less -S
awk  '$2 > 9800' #輸出符合條件的行
awk  '$3 - $2 > 1000'
awk  '$1 ~ /chr1/ && $3 - $2 > 1000' #~表示符合正則表達式
awk  '$1!~/^#/' #去掉注釋行
awk  'NR >= 3 && NR <= 5' #取出第3-5行
awk  '{if($3=="gene") print $0}'
awk  '{if($3=="gene") {print $0} else {print $3 " is not gene"}}'
awk  '{for(i=1;i<4;i++) {print $i}}'
awk  '/exon/{print $5-$4}'

cat chipfile | sed -n '16,20p' | awk '{print $1,$3}'
cat chipfile | sed -n '16,20p' | awk '{print $3-$2}'
cat chipfile | sed -n '16,20p' | awk '$1 > 500'  #cat chipfile | sed -n '16,20p' | awk '$1 > 500 {print $0}'
cat chipfile | sed -n '16,20p' | awk '{if($1 > 500) {print $0}}'  #cat chipfile | sed -n '16,20p' | awk '{if($1 > 500) {print $0} else {print $1 " is not larger than 500"}}'
cat chipfile | sed -n '16,20p' | awk '$3 - $2 > 0'
cat chipfile | sed -n '16,20p' | awk '$1 > 500 && $3 - $2 > 0'  #兩者都要成立
cat chipfile | sed -n '16,20p' | awk '$1 ~ /5/'
cat chipfile | sed -n '16,20p' | awk '$1 !~ /^5/'

舉例用到的chipfile文件的內(nèi)容如下 ↓(我瞎寫的)

ChIP,即染色質(zhì)免疫共沉淀技術(shù)(Chromatin immunoprecipitation, ChIP)。
它是在生理狀態(tài)下,利用甲醛將細胞內(nèi)的DNA與蛋白質(zhì)交聯(lián)(Crosslink),從而形成復合物,然后經(jīng)細胞裂解、細胞核收集和裂解、分離染色體、通過超聲或酶處理將染色質(zhì)隨機切割,再通過抗原抗體的特異性識別反應沉淀此復合體,從而特異性地富集目的蛋白結(jié)合的DNA片段,通過對目的片斷的純化與檢測,從而獲得與該蛋白結(jié)合的DNA的信息。
1. 使用甲醛將染色體上的所有蛋白質(zhì)與DNA交聯(lián)
2. 將DNA切割成小片段
3. 使用抗體分離出感興趣的蛋白,及其結(jié)合的DNA片段
4. 洗去其它蛋白和DNA片段
5. 解除交聯(lián),洗去蛋白,保留DNA片段

ChIP-seq是將染色質(zhì)免疫共沉淀與二代高通量測序相結(jié)合的技術(shù),它將ChIP獲得的DNA片段進行高通量測序,捕捉到細胞內(nèi)動態(tài)的、瞬時的蛋白質(zhì)與DNA之間的相互結(jié)合作用,一次性獲取與目的蛋白相結(jié)合的DNA序列、確定蛋白的結(jié)合分布和精確的結(jié)合位點以及結(jié)合基序等大量信息。
6. DNA片段加接頭,PCR擴增,檢查文庫濃度,測序
7. 去除低質(zhì)量reads,將高質(zhì)量reads比對到參考基因組,得到一系列基因組坐標
8. control使用相同的input chromatin,不使用抗體富集,去除所有蛋白,測序
9. 使用ChIP-seq的reads建立一個genome browser track,記錄統(tǒng)計學顯著的峰
10. 比較不同樣品中相同蛋白的峰;尋找特定蛋白結(jié)合的motif;根據(jù)蛋白與基因的相對結(jié)合位置確定蛋白的功能

156 897 633
5555    689 971
852 31  598
946 377 84
0   5   9877

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容