p1_500sc.fasta、p2_500sc.fastaという名前のサンプルがいくつかあります。各ファイルは次のようになります。
>NODE_60_length_504_cov_1.580902
TATATCGCCGTAGATAGACGAATACGGGATTTTGAAATGACTGATATATTCAAGCACATC
CTGTTCAGTCCAAAATGACATCGGCTTCGATTTCGGGATTGCCCCCGCAAAGTTGTTACA
>NODE_61_length_503_cov_4.457447
GATATGGGCCGGTGAGCATGCTGTCACATTTTGGGCAGGTGCCGAGGATTATGAGCTCGT
CTTCCGGCGTCAACGCTTGTTCGTTGCGTCTGGTGATGTGTTCCAGAGCGGCATAGTCGT
>NODE_62_length_500_cov_4.037534
CTCGTTCTTGCACTCCTGAATGAAGCGAATCTCTGACGAGGGTATTCCATAATCCTCTAT
CAGCTTACGCTTGATTTCTG
>NODE_63_length_500_cov_1.718499
GGAGGATATCAATGCCCTTATACTGCTTCTCAACAGTAGGAGTAATGCGGATACCCAAAA
CGGTCTTAGGGTTCTCCAGCAACTTCATGGCATTCCAACGCTTCAAGTCATCCATGCGGA
AGCCTTCGGCT
ご覧のとおり、NODEフレーズがあります。各ファイルのサンプル名でファイル指定子の "NODE"を変更したいと思います。p1/p2/p100...pn
p1_500sc.fastaファイルの出力は次のとおりです。
>p1_60_length_504_cov_1.580902
TATATCGCCGTAGATAGACGAATACGGGATTTTGAAATGACTGATATATTCAAGCACATC
CTGTTCAGTCCAAAATGACATCGGCTTCGATTTCGGGATTGCCCCCGCAAAGTTGTTACA
>p1_61_length_503_cov_4.457447
GATATGGGCCGGTGAGCATGCTGTCACATTTTGGGCAGGTGCCGAGGATTATGAGCTCGT
CTTCCGGCGTCAACGCTTGTTCGTTGCGTCTGGTGATGTGTTCCAGAGCGGCATAGTCGT
>p1_62_length_500_cov_4.037534
CTCGTTCTTGCACTCCTGAATGAAGCGAATCTCTGACGAGGGTATTCCATAATCCTCTAT
CAGCTTACGCTTGATTTCTG
>p1_63_length_500_cov_1.718499
GGAGGATATCAATGCCCTTATACTGCTTCTCAACAGTAGGAGTAATGCGGATACCCAAAA
CGGTCTTAGGGTTCTCCAGCAACTTCATGGCATTCCAACGCTTCAAGTCATCCATGCGGA
AGCCTTCGGCT
p123_500sc.fasta ファイルの場合
>p123_2_length_456_cov_4.453333
GATATGGGCCGGTGAGCATGCTGTCACATTTTGGGCAGGTGCCGAGGATTATGAGCTCGT
CTTCCGGCGTCAACGCTTGTTCGTTGCGTCTGGTGATGTGTTCCAGAGCGGCATAGTCGT
>p123_356_length_3_cov_4.037908
CTCGTTCTTGCACTCCTGAATGAAGCGAATCTCTGACGAGGGTATTCCATAATCCTCTAT
CAGCTTACGCTTGATTTCTG
他のサンプルでも同様です。サンプルはp1から始まり、p150に達することができます。
ベストアンサー1
bash
+sed
解決策:
for f in p[0-9]*.fasta; do
pfx="${f%%_*}"
sed -i "s/^>NODE/>$pfx/" "$f"
done
pfx="${f%%_*}"
_
– 結果を変数に割り当てるまで、ファイル名の右側の部分を切り捨てます。pfx
sed -i "s/^>NODE/>$pfx/"
- 部分>NODE
文字列を変数に置き換える$pfx