重命名多个文件中的特定行

重命名多个文件中的特定行

我的问题是:我的文件夹中有多个文件,在每个文件中我想更改特定行。例如:

file_1.fasta 包含:

>remove__c_0000234
ACTG
>remove__c_0000235
CGTA

file_2.fasta 包含:

>remove__c_0000345
CCTA
>remove__c_0000431

...

我想>remove__从该文件夹中的每个文件中删除该部分。我如何在 Linux 上使用单行代码来做到这一点?

谢谢你!

答案1

足够简单:sed -s -i 's/>remove__//g' *.fasta

较长的形式是sed --separate --in-place 's/>remove__//g' *.fasta,其中-s告诉 sed 将输入视为单独的文件而不是连续的流。并-i使其直接在文件中工作,而不是在标准输出上显示结果。

执行上述命令后查看示例文件(标题不会出现在文件中):

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

相关内容