我有一个 gzip 压缩文件,如下所示:
1 rs571093408 rs571093408 13380 C G
我想将第一列和第四列与:
中间合并,并用新内容替换第二列,因此输出如下所示:
1 1:13380 rs571093408 13380 C G
输入是一个 gzip 压缩文件,我希望输出文件被 gzip 压缩。
答案1
您可以使用命令打印 gzip 压缩文件的内容zcat
。
所以打印源文件file1.gz
:
$ zcat file1.gz
1 rs571093408 rs571093408 13380 C G
2 rs200000002 rs222222222 12222 D E
3 rs300000003 rs333333333 13333 F K
要执行的一个班轮:
$ zcat file1.gz|awk '{print $1" "$1":"$4,$3,$4,$5,$6}'|gzip > file2.gz
打印结果文件file2.gz
内容:
$ zcat file2.gz
1 1:13380 rs571093408 13380 C G
2 2:12222 rs222222222 12222 D E
3 3:13333 rs333333333 13333 F K
更新。根据以下评论添加改进版本:
$ zcat file1.gz|awk '{$2=$1":"$4}1'|gzip > file2.gz
答案2
我最终使用的代码是:
zcat file.gz | awk '{$2=$1":"$4}1' | gzip > new_file.gz | mv new_file.gz file.gz
mv new_file.gz file.gz
最后用旧文件替换新文件。