【shell笔记>命令|实战】zcat与awk简单连用
2017-07-06 本文已影响51人
王诗翔
有些数据文件太大,一般采用gzip压缩,比如我现在处理的ICGC数据。下载1到2G,一解压感觉要炸。其实文件里面的信息很多,我们需要的往往只有几个域而已。这时候我们可以通过zcat
与awk
连用省去中间的解压过程直接提取出我们想要的域(类似R中数据框的列向量)。
比如下面我提取出压缩文件中的前两个域并以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
我们还可以通过FS
来指定输入的分隔符。
zcat simple_somatic_mutation.open.tsv.gz | head | awk 'BEGIN{FS="\t";OFS="\t";} {print $1,$2}'
这样awk
会以tab
键区分输入文件的域,不然默认用空格键。