我有一组非常大(80GB)的文件(基因组变体剂量),目前是“.txt.gz”,并具有以下布局(列/变量):
Chr RSID POS REF ALT Ind1 Ind2...Ind(n) 其中 1:n 是个体
我想编辑这个文件,这样:
Chr 列/变量设置为所有行的特定染色体编号(例如,3)
在文件的特定位置插入了一个新列(我希望在 ALT 和 Ind1 之间插入新列/变量......这样新列将成为编辑文件中的第 6 列)。我还希望将此列的值设置为常数(例如,0)。
最后,我想以与读入相同的格式输出编辑后的文件(因此,输出应为“.txt.gz”
感谢您的帮助,并很乐意提供更多详细信息。
解压缩文件,将未压缩的数据流传递给
awk
,让我们awk
进行修改,然后将流传递给 以gzip
进行压缩。该
awk
命令将其输入字段分隔符 (FS
) 和输出字段分隔符 (OFS
) 设置为制表符。然后它将第一个字段设置为3
,将第 6 个字段设置为0
,然后是一个制表符和旧的第 6 个字段。1
脚本末尾的唯一awk
字符会导致输出修改后的数据。的输入
awk
是来自 的解压缩数据流,来自gzip -d
的输出awk
经过gzip
压缩。如果数据有我们需要单独修改的标题行:
在这里,我们根据输入的行号做不同的事情。如果我们在第 1 行,我们插入标题
NEW
作为新的第 6 个字段的标题。如果我们不在第 1 行,我们像以前一样修改数据。您也可以使用 来执行此操作
sed
,但是当您使用 标记问题时,awk
我假设这是您更喜欢使用的工具。确认可以在 gawk、mawk-1、mawk-2 和 nawk 上工作: