我想在我的文件中插入文件标题的一部分。
文件标题是
GeneName_something.fas。
我的文件有这样的格式:
4‘>种a 阿塔塔加塔 =‘>种b 阿塔格纹身
我想在物种名称后面插入基因名。产出将是:
4‘>种-GeneName 阿塔塔加塔 =‘5’>种-GeneName 阿塔格纹身
我想使用bash与可能的awk或sed,并运行它作为循环在我的文件夹。谢谢
发布于 2018-03-28 11:46:29
使用GNU (BEGINFILE可以替换为FNR==1,但我使用的是-i inplace):
$ 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实际上存在的文件名。如果它不存在,无论如何都会添加一个-。
发布于 2018-03-28 12:27:16
遵循awk也可以帮助您进行相同的操作。
解决方案1:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{$0=$0"-"val;} 1' GeneName_something.fas解决方案2:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{print $0"-"val;next} 1' GeneName_something.fashttps://stackoverflow.com/questions/49533471
复制相似问题