我想在我的文件中插入文件标题的一部分。
文件标题是
GeneName_something.fas。
我的文件有这种格式:
'> Speciesa
atgaatatagatata
“> Speciesb
atagtagctatgat
我想在Species名称后插入Gene名称。输出将是:
'> Speciesa-GeneName
atgaatatagatata
“> Speciesb-GeneName
atagtagctatgat
我想使用bash和awk或sed并在我的文件夹中将其作为循环运行。 感谢
答案 0 :(得分:1)
使用GNU awk(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
实际存在的文件名。如果它不存在,则无论如何都会添加-
。
答案 1 :(得分:1)
关注awk
也可以帮助你。
解决方案1:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{$0=$0"-"val;} 1' GeneName_something.fas
解决方案第二:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{print $0"-"val;next} 1' GeneName_something.fas