首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件头中插入部分文件名

在文件头中插入部分文件名
EN

Stack Overflow用户
提问于 2018-03-28 11:35:36
回答 2查看 283关注 0票数 0

我想在我的文件中插入文件标题的一部分。

文件标题是

GeneName_something.fas。

我的文件有这样的格式:

4‘>种a 阿塔塔加塔 =‘>种b 阿塔格纹身

我想在物种名称后面插入基因名。产出将是:

4‘>种-GeneName 阿塔塔加塔 =‘5’>种-GeneName 阿塔格纹身

我想使用bash与可能的awk或sed,并运行它作为循环在我的文件夹。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-28 11:46:29

使用GNU (BEGINFILE可以替换为FNR==1,但我使用的是-i inplace):

代码语言:javascript
复制
$ awk '
  BEGINFILE { split(FILENAME,f,"_") }  # split filename on _
  /^\47/ { $0=$0"-"f[1] }              # add to quote-starting records
  1' GeneName_something.fas            # output
'>Speciesa-GeneName
atgaatatagatata
'>Speciesb-GeneName
atagtagctatgat

此版本将更改后的数据输出到stdout,但可以使用awk -i inplace在内部编辑文件(请参阅here)。

注意到,没有检查GeneName实际上存在的文件名。如果它不存在,无论如何都会添加一个-

票数 1
EN

Stack Overflow用户

发布于 2018-03-28 12:27:16

遵循awk也可以帮助您进行相同的操作。

解决方案1:

代码语言:javascript
复制
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{$0=$0"-"val;} 1' GeneName_something.fas

解决方案2:

代码语言:javascript
复制
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{print $0"-"val;next} 1' GeneName_something.fas
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49533471

复制
相关文章

相似问题

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