我目前正在使用一个大型.tsv.gz文件,该文件包含两列,看起来像这样:
xxxyyy 408261
yzlsdf 408260null408261
zlkajd 408258null408259null408260
asfzns 408260
我想做的是找到所有包含“ null”的行,并用逗号“,”替换。这样结果将如下所示:
xxxyyy 408261
yzlsdf 408260,408261
zlkajd 408258,408259,408260
asfzns 408260
我尝试使用以下命令,但是没有用:
sed -i 's/null/,/g' 46536657_1748327588_combined_copy.tsv.gz
解压缩文件并再次尝试也无法用于tsv文件。
我还尝试过在文本编辑器中打开解压缩的文件以手动查找和替换。但是文件太大,会崩溃。
答案 0 :(得分:0)
尝试:
zcat comb.tsv.gz | sed 's/null/,/g' | gzip >new_comb.tsv.gz && mv new_comb.tsv.gz comb.tsv.gz
因为这样可以避免一次解压缩文件,所以应该节省内存。
让我们从这个示例文件开始:
$ zcat comb.tsv.gz
xxxyyy 408261
yzlsdf 408260null408261
zlkajd 408258null408259null408260
asfzns 408260
接下来,我们运行命令:
$ zcat comb.tsv.gz | sed 's/null/,/g' | gzip >new_comb.tsv.gz && mv new_comb.tsv.gz comb.tsv.gz
通过查看输出文件,我们可以看到进行了替换:
$ zcat comb.tsv.gz
xxxyyy 408261
yzlsdf 408260,408261
zlkajd 408258,408259,408260
asfzns 408260