2015-04-17 51 views
0

我正試圖在使用grep的目錄中找到一個鍵。 鍵數很大,所以我將它們存儲在keys.txt文件中,並一次讀取一行。 final_modules目錄將被搜索。從文件讀取輸入時,grep不工作

當我們從終端運行一個密鑰時發現它。

$cd ~/Unsed_key_task/final_modules 
grep -r <KEY> 

但是當相同的密鑰在下面的文件中迭代時,找不到它。

keys.txt>> 
    key1 
    key2 
    key3 
    ... 
    ... 

和 greps.sh >>

FILENAME=$1  
    while read LINE 
      do 
        cd ~/Unsed_key_task/final_modules 
        let count++ 
        echo $LINE 
        pwd 
        grep -r $LINE 

        if [ $? -eq 0 ] 
        then 
          echo " found" 
        else 
          #echo "not found" 
          echo $count 
          echo $LINE 
          echo "  [ Not found ]" 
        fi 
    done < $FILENAME  

當我打印$LINE它打印正確,也pwd打印正確的目錄。 我的代碼只找到一個鍵並退出。

+2

要grep使用來自文件的模式,使用'grep -f patterns_file file'。 – fedorqui

+0

謝謝,但爲什麼這不起作用。即使$ LINE獲得正確的值? – Ankit

回答

3

grep可以從文件讀取模式。你不需要自己迭代$FILENAME。你可以用下面這個簡單的命令完成你想要實現的功能:

grep -f "$FILENAME" -r 
+0

它會一次從「FILENAME」中搜索一行嗎? – Ankit

+0

試試吧! :)它符合你的要求嗎? (可能你想做更多,當發現什麼東西) – hek2mgl

+0

爲什麼我的腳本不工作 – Ankit