shell 中的 Sed 函数应用于目录中的所有 .gff 文件
Sed function in shell applied to all .gff files in a directory
我正在处理 .gff3 文件,试图删除目录中许多文件底部的重叠序列。 contig 序列与文件的其余部分用 ##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##*/}
删除匹配 */
.[=16 的最长左侧部分=]
for F in directory/input/*; do
sed '/^##FASTA$/,$d' "${F}" > "directory/output/${F##*/}.gff"
done
我正在处理 .gff3 文件,试图删除目录中许多文件底部的重叠序列。 contig 序列与文件的其余部分用 ##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##*/}
删除匹配 */
.[=16 的最长左侧部分=]
for F in directory/input/*; do
sed '/^##FASTA$/,$d' "${F}" > "directory/output/${F##*/}.gff"
done