我的问题是:我的文件夹中有多个文件,在每个文件中我想更改特定行。例如:
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