Linux

合併 gzip 文件的兩列並將合併的列替換為另一列

  • February 4, 2020

我有一個 gzipped 文件,看起來像這樣:

1 rs571093408 rs571093408 13380 C G

我想將第一列和第四列與:中間合併,並用新內容替換第二列,所以輸出如下所示:

1 1:13380 rs571093408 13380 C G

輸入是一個壓縮文件,我希望輸出文件被壓縮。

您可以使用命令列印 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

引用自:https://unix.stackexchange.com/questions/565575