ファイル内のパターンの前にファイル名を書き込みます。

ファイル内のパターンの前にファイル名を書き込みます。

何千もの類似したファイルがあり、そのファイルのパターンの後にそれぞれの名前を書きたいと思います。たとえば、

**ファイル1の名前はnexus0000です。

ファイルには以下が含まれます。

>Pseudomonas_1M
ATGATCCGCTTCGAGCAGGTCGGCAAACGCTATC
>Pseudomonas_2M
GTGAGCTTCGAGCAGGTCGGCGAGCCGCTATC

私はこれを得たいと思います:

nexus0000>Pseudomonas_1M
ATGATCCGCTTCGAGCAGGTCGGCAAACGCTATC
nexus0000>Pseudomonas_2M
GTGAGCTTCGAGCAGGTCGGCGAGCCGCTATC

**ファイル2の名前はnexus0001です。

ファイルには以下が含まれます。

>Pseudomonas_1M
ATGATCCGCTTCGAGCAGGTCGGCAAACGCTATC
>Pseudomonas_2M
GTGAGCTTCGAGCAGGTCGGCGAGCCGCTATC

私はこれを得たいと思います:

nexus0001>Pseudomonas_1M
ATGATCCGCTTCGAGCAGGTCGGCAAACGCTATC
nexus0001>Pseudomonas_2M
GTGAGCTTCGAGCAGGTCGGCGAGCCGCTATC

など。

これまでは、次を使用して最初の行にのみファイル名を書き込むことができます。

for file in nexus*; do echo "$file"$"$(cat -- "$file")" > "$file"; done

助けてくれてありがとう!

ベストアンサー1

sed解決策:

for f in nexus*; do sed -i "s/^>/$f&/" "$f"; done

または使用愚かなおよびinplace拡張機能(v.4.1.0から利用可能):

for f in nexus*; do awk -i inplace '/^>/{ $0=FILENAME$0 }1' "$f"; done

おすすめ記事