带模式文件的grep返回所有行而不是目标

时间:2018-07-26 07:26:27

标签: grep

我尝试使用grep通过第二个文件中的模式列表对文件进行子采样。但是,每当我运行它时,grep都将返回第一个文件中的所有内容。

 grep -A1 -w --file=Fmerg_U1_filtering.txt Fmerg_final.fasta

但是,当我使用这种更为繁琐的方法时,它会很好地工作。

#!/bin/bash
while read i; do
    grep -A1 -w $i Fmerg_final.fasta
done < Fmerg_U1_filtering.txt

任何想法可能是什么问题?这让我发疯了!

head Fmerg_U1_filtering.txt
Transcript_25
Transcript_455
Transcript_526
Transcript_631
Transcript_631

1 个答案:

答案 0 :(得分:1)

Fmerg_U1_filtering.txt中的文本很有可能带有尾随/前导空格。

假设存在尾随空格,带有--file的grep命令也将尝试匹配这些空格,但是,带有$i(不带引号)的shell脚本将忽略这些空格。

因此,请检查文件Fmerg_U1_filtering.txt,删除前导/后缀空格。