我正在搜索/匹配源文件中的术语列表sourcefile.txt
与目标文件中的术语target.bed
。我想将 grep 的术语及其相应的距离值打印到单独的输出文件中。
源文件如下所示:
SMOX
NCOA3
EHF
目标文件如下所示:
Chromosome PeakStart PeakEnd Distance GeneStart GeneEnd ClosestTSS_ID Symbol Strand
chr20 4100204 4100378 -29134 4129425 4168394 SMOX null +
chr20 6234586 46234754 -21075 46255745 46257534 NCOA3 null +
chr11 34622044 34622238 -20498 34642639 34668098 EHF >null +
包含 grep 文本的输出文件(ClosestTSS_ID 和距离)
SMOX -29134
NCOA -21075
EHF -20498
我试过这个脚本:
exec < sourcefile.txt
while read line
do
genes=$(echo $line| awk '{print $1}')
grep -w "genes" targetfile.bed | awk '{print $4,$7}' >> outputfile.txt
done`
但它不适用于我的不同源文件;我想在同一个循环中包含许多不同的源文件,但该脚本仅适用于第一个。我使用了相同的脚本,但文件名不同。
我也试过这个:
rm sourcefile_temp.txt
touch sourcefile_temp.txt
awk 'NR>1{print $1}' sourcefile.txt > sourcefile_temp.txt
exec < sourcefile_temp.txt
while read line
do
set $line
sourcefilevar=`grep $1 targetfile.bed| cut -f4| cut -f7`
echo $line $tssmoq2 >> output.txt
done`
这给了我一个非常奇怪的输出。
任何建议/更正/更好的方法将不胜感激。