2014-07-24 53 views
1

给定一个包含2列,一个字符串和一个文件名的文件,它们如何与grep命令组合使用?还希望将输出指向与不同文件夹中的SEQFILE相同的名称。相信下面的接近,以正确引用丢失:在bash循环中使用多个变量解析文件行

while IFS=" ", read SEQID SEQFILE 
do 
grep -A1 -m 1 ${SEQID} ${SEQFILE} > ./tmp/${SEQFILE} 
done < missingSeq.txt 
+1

是文件逗号或空格分隔?上面的IFS会让我想到或者两者兼而有之。 – kojiro

+0

有一件事是你的ifs ..第二个是你的重定向操作符> –

+0

你想要用grep命令做什么 –

回答

2

如果该文件是逗号分隔,然后IFS=" ",是没有意义的,但如果它的空格分隔,然后将逗号的方式获得。这可能是解决问题上面你出示:

while IFS=' ' read id file; do 
    grep -A1 -m1 "$id" "$file" > "./tmp/$file" 
done < missingSeq.txt 
+0

你说得对,它是空格,额外的逗号是错误。这两个列文件是来自并行运行作业的错误报告,需要为每个文件名附加每个SEQID(和下面一行)。谢谢! – user2525172

0
IFS=' ' 
while read seq_id seq_file; do 
    grep -A1 -m1 "$seq_id" "$seq_file" >> ./tep/seq_file # i assume "tep" was actually meant 
done < missingSeq.txt 
+0

做一点干净吧 –

+0

>>将追加到文件..时间>将覆盖 –