首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用不同的字符串替换一组文件中的字符串?

如何用不同的字符串替换一组文件中的字符串?
EN

Unix & Linux用户
提问于 2019-02-19 17:59:16
回答 1查看 223关注 0票数 1

我有一组vcf文件,每个文件都有一个字符串,以‘SRR’.例如,在file1中我有以下行:

代码语言:javascript
复制
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  SRR2481146_1

在file2中,我有:

代码语言:javascript
复制
 #CHROM POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  SRR2481151_1

在档案3中,我有:

代码语言:javascript
复制
 #CHROM POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  SRR2481163_1

我希望将这些字符串替换为特定的细胞系名称,例如,将file1中的‘file1’替换为‘with 116_DMSO’,将file2中的'SRR2481151_1‘替换为'SW_DMSO',将file3中的'SRR2481163_1’替换为‘COLO205’等等。

例如,对于file1,所需的输出应该是:

代码语言:javascript
复制
 #CHROM POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  HCT116_DMSO

对于file2:

代码语言:javascript
复制
 #CHROM POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  SW_DMSO

我知道我可以单独使用如下代码来完成这一任务:

代码语言:javascript
复制
sed -i 's/SRR2481146_1/HCT116_DMSO/g' file1
sed -i 's/SRR2481151_1/SW_DMSO/g' file2

但是由于我有100个文件,这样做太费时了。

有什么好办法吗?

谢谢!

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-02-19 19:19:09

正如@Kusalananda所写的,最好在https://bioinformatics.stackexchange.com/上问这个问题。也许有人能把这个问题搬到那里去?

创建一个文本文件,在该文本文件中,您可以在每一行中写入由空格分隔的旧名称和所需的新名称。

代码语言:javascript
复制
$ cat names.txt
SRR2481146_1 HCT116_DMSO
SRR2481151_1 SW_DMSO

使用bcftools重标头更改示例名称如下:

代码语言:javascript
复制
$ bcftools reheader -s names.txt file.vcf > file_renamed.vcf

可以使用gnu并行对文件夹中的所有vcf文件运行此命令:

代码语言:javascript
复制
$ parallel 'bcftools reheader -s names.txt {} > {.}_renamed.vcf' ::: *.vcf
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/501658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档