在文件的headers中插入部分文件名
Insert part of the file name in headers of the file
我想在我的文件中插入文件标题的一部分。
文件标题是
GeneName_something.fas.
我的文件格式如下:
'>Speciesa
atgaatatagatata
'>Speciesb
atagtagctatgat
我想在物种名称后插入基因名称。输出将是:
'>Speciesa-GeneName
atgaatatagatata
'>Speciesb-GeneName
atagtagctatgat
我想将 bash 与 awk 或 sed 一起使用,并将 运行 作为我文件夹中的循环。
谢谢
使用 GNU awk(BEGINFILE
可以替换为 FNR==1
但我使用的是 -i inplace
):
$ awk '
BEGINFILE { split(FILENAME,f,"_") } # split filename on _
/^/ { [=10=]=[=10=]"-"f[1] } # add to quote-starting records
1' GeneName_something.fas # output
'>Speciesa-GeneName
atgaatatagatata
'>Speciesb-GeneName
atagtagctatgat
此版本将更改的数据输出到标准输出,但您可以使用 awk -i inplace
就地编辑文件(请参阅 here)。
注意,没有检查 GeneName
实际存在的文件名。如果不存在,无论如何都会添加一个-
。
以下 awk
也可以帮助您。
解法一:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{[=10=]=[=10=]"-"val;} 1' GeneName_something.fas
方案二:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{print [=11=]"-"val;next} 1' GeneName_something.fas
我想在我的文件中插入文件标题的一部分。
文件标题是
GeneName_something.fas.
我的文件格式如下:
'>Speciesa
atgaatatagatata
'>Speciesb
atagtagctatgat
我想在物种名称后插入基因名称。输出将是:
'>Speciesa-GeneName
atgaatatagatata
'>Speciesb-GeneName
atagtagctatgat
我想将 bash 与 awk 或 sed 一起使用,并将 运行 作为我文件夹中的循环。 谢谢
使用 GNU awk(BEGINFILE
可以替换为 FNR==1
但我使用的是 -i inplace
):
$ awk '
BEGINFILE { split(FILENAME,f,"_") } # split filename on _
/^/ { [=10=]=[=10=]"-"f[1] } # add to quote-starting records
1' GeneName_something.fas # output
'>Speciesa-GeneName
atgaatatagatata
'>Speciesb-GeneName
atagtagctatgat
此版本将更改的数据输出到标准输出,但您可以使用 awk -i inplace
就地编辑文件(请参阅 here)。
注意,没有检查 GeneName
实际存在的文件名。如果不存在,无论如何都会添加一个-
。
以下 awk
也可以帮助您。
解法一:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{[=10=]=[=10=]"-"val;} 1' GeneName_something.fas
方案二:
awk 'FNR==1{val=FILENAME;sub(/_.*/,"",val)} />Species/{print [=11=]"-"val;next} 1' GeneName_something.fas