複数ファイルの特定の行名を変更する

複数ファイルの特定の行名を変更する

私の問題は、フォルダに複数のファイルがあり、各ファイルの特定の行を変更したいということです。たとえば、

file_1.fasta には以下が含まれます。

>remove__c_0000234
ACTG
>remove__c_0000235
CGTA

file_2.fasta には以下が含まれます。

>remove__c_0000345
CCTA
>remove__c_0000431

...

>remove__このフォルダ内のすべてのファイルからこのセクションを削除したいと思います。 1行のコードを使用してLinuxでこれを行うにはどうすればよいですか?

ありがとうございます!

答え1

十分簡単です。sed -s -i 's/>remove__//g' *.fasta

長い形式は、sedが連続したストリームではなく別々のファイルとして入力を処理するように指示するところsed --separate --in-place 's/>remove__//g' *.fastaです。標準出力に結果を表示するのではなく、ファイルで直接動作させるようにします-s-i

上記のコマンドを実行した後、サンプルファイルを表示します(ヘッダーはファイルには表示されません)。

$ more *.fasta | cat
::::::::::::::
file_1.fasta
::::::::::::::
c_0000234
ACTG
c_0000235
CGTA
::::::::::::::
file_2.fasta
::::::::::::::
c_0000345
CCTA
c_000043

関連情報