我正在使用以下命令从字符串中的某些位置提取字符:
left=1; right=4; grep ETM21CH01EPU3Z -A1 SLf_454.fna | tail -n 1 | awk '{print substr($0,1,4)}'
并得到这个正确的输出:
GTTG
现在我想用bash 变量left和right中的值替换1和4。
我试过这个:
left=1; right=4; grep ETM21CH01EPU3Z -A1 SLf_454.fna | tail -n 1 | awk -v l=$left r=$right '{print substr($0,l,r)}'
awk:命令。行:1:致命:无法打开文件 `{print substr($0,l,r)}' 进行读取
请问有什么建议吗?谢谢。
编辑:从下面的评论中复制,所以我们可以实际阅读它:
好吧,我还有一个文件,其中写有要搜索的内容(例如 ETM21CH01EPU3Z)和位置。所以整个代码是:
while read -r line; do
echo $line;
name=`echo $line | cut -d' ' -f 1`;
left=`echo $line | cut -d' ' -f 2`;
right=`echo $line | cut -d' ' -f 3`;
grep $name -A1 SLf_454.fna | tail -n 1 | awk -v l=$left -v r=$right '{print substr($0,l,r)}';
done < CL6o_blastoutput_SLf_454.fna_out