shell中的 Sed函数应用于目录中的所有.gff文件



我正在使用.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

感谢任何帮助!

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

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

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

相关内容

  • 没有找到相关文章

最新更新