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