合并 gzip 压缩文件的两列,并将合并的列替换为另一列

合并 gzip 压缩文件的两列,并将合并的列替换为另一列

我有一个 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最后用旧文件替换新文件。

相关内容