1

我正在处理 .gff3 文件,试图删除目录中许多文件底部的重叠群序列。重叠群序列用##FASTA 与文件的其余部分分开,我希望删除下面的所有内容(DNA 序列,FASTA 格式)。

此脚本适用于一个文件:

sed '/^##FASTA$/,$d' file1.gff > file1_altered.gff

但是当我尝试将它应用于这样的目录中的所有文件时失败了:

for F in directory/input/*; do
   N=$(basename $F) sed '/^##FASTA$/,$d' ${F} > directory/output/$N.gff
done

任何帮助表示赞赏!

4

1 回答 1

1

您在 . 之后缺少一个分号N=$(basename $F)。它的编写方式是它只是一次赋值,即N在重定向中使用时为空。

basename如果使用 shell 的内置字符串处理,则可以完全避免使用:${F##*/}删除匹配的最长左侧部分*/

 for F in directory/input/*; do
   sed '/^##FASTA$/,$d' "${F}" > "directory/output/${F##*/}.gff"
 done
于 2021-03-01T07:58:58.630 回答