有些數(shù)據(jù)文件太大,一般采用gzip壓縮,比如我現(xiàn)在處理的ICGC數(shù)據(jù)。下載1到2G,一解壓感覺(jué)要炸。其實(shí)文件里面的信息很多,我們需要的往往只有幾個(gè)域而已。這時(shí)候我們可以通過(guò)zcat與awk連用省去中間的解壓過(guò)程直接提取出我們想要的域(類似R中數(shù)據(jù)框的列向量)。
比如下面我提取出壓縮文件中的前兩個(gè)域并以tab分隔輸出。
wangshx@wangshx-KVM:~/projects/Mut-Signature/dataset$ zcat simple_somatic_mutation.open.tsv.gz | head | awk 'BEGIN{OFS="\t";} {print $1,$2}'
icgc_mutation_id icgc_donor_id
MU28469596 DO50633
MU28469596 DO50633
MU28469596 DO50633
MU28469596 DO50633
MU28469596 DO50633
MU28469596 DO50633
MU28469596 DO50633
MU28469596 DO50633
MU28469596 DO50633
我們還可以通過(guò)FS來(lái)指定輸入的分隔符。
zcat simple_somatic_mutation.open.tsv.gz | head | awk 'BEGIN{FS="\t";OFS="\t";} {print $1,$2}'
這樣awk會(huì)以tab鍵區(qū)分輸入文件的域,不然默認(rèn)用空格鍵。