在生物信息分析中,經常會遇到這種情況,當數據量過大的時候會超出我們服務器的最大資源配置,導致有些軟件或者我們自己寫的腳本執行不過去,這時我們通常使用的辦法就是將輸入文件拆成很多份去依次執行,最終將結果文件合並。雖然使用python等語言可以實現拆分文件,但是既然已經有了輪子,我們就沒必要去造了,這時我們就用到了linux命令split。
在linux中輸入 split --help 我們可以看到它的參數如下:
我們現在來看看它具體的參數該怎么用:
split支持自定義輸出文件大小和輸出文件行數兩種模式,此外還可以定義每一行最大的值。
-l 按輸出文件行數 : split -l 200 input_file out_file
-b 按輸出文件大小 : split -b 200 input_file out_file(注意-b后邊跟的數字需要換算成字節數)
注:out_file為輸出文件的前綴
另外,還有 -d 和 -a 兩個選項:
-d 如果加上-d則后綴為數字,不加則默認為字母
-a 默認為2,意思是后綴的位數,這個是根據你分出來的文件個數決定的
例如:
可以看到,-a為4的話out后邊的位數就是4位,以此類推,設置為3就是3位。
Tips:
在拆分文件之前我們可以先利用命令 wc -l 計算一下文件總行數,然后根據我們需要分成多少個文件去簡單算一下每一個文件需要多少行,會方便一些。