1

我对 shell 脚本很陌生,所以这可能很容易回答

我在一个程序中发现了一些有趣的基因,输出是数据文件interest.txt

Nrg3
Srebf1
Cacna2d3
LOC100759725
LOC100761135
LOC100771217
LOC100769029

我有另一个数据文件(unique_saml),其中包含大部分这些名称以及其他信息,例如

Nrg3    neuregulin_3    XM_003503005.1

所以我想编写一个脚本来获取我的结果并从我的数据文件中 grep 其余数据

"#!/bin/sh
for ((  i = 0 ;  i <= 7; i++  ))
do  
cat interest.txt | head -$i | tail -1 | gawk '{print $1}' > tempname

name=`awk '{print $1 }' < tempname`

grep `echo $name` unique_saml >> results.txt
done

但是程序停止并且永远不会结束,因为i = 4 = LOC100759725在 unique_saml 文件中找不到 = grep 返回空。

我该如何避免这种情况?

4

2 回答 2

0

如果您想遍历文件interest.txt并添加更多信息(如果可用),您可以执行以下操作:

cat interest.txt | while read line
do
   echo -e "$line\t`grep $line unique_saml | awk '{print $2 "\t" $3}'`"
done
于 2013-08-02T12:33:10.200 回答
0

grep可以使用以下方式从文件中读取模式-f

$ grep -f interest.txt unique_saml
Nrg3    neuregulin_3    XM_003503005.1

如果您希望其中的值interest.txt仅匹配 中的第一列unique_saml

$ sed 's/^/^/' interest.txt | grep -f - unique_saml
Nrg3    neuregulin_3    XM_003503005.1
于 2013-02-01T09:18:47.190 回答