2013-04-25 55 views
0

你好,我目前正在試圖在Linux中創建一個腳本文件,其中輸入了oprgram的輸出並掃描它以查找有多少詞語存在的次數。爲了更清楚,我想掃描輸出並存儲變量,該輸出中存在多少個單詞。我對linux中的scripitin很陌生。我嘗試將輸出存儲在一個文件中,然後逐行掃描以找到這些單詞,但出於某種原因,我用來解析它的循環永遠不會結束。你可以幫我嗎?在shell中掃描程序的輸出

./program > buffer.txt 

while read LINE 
do 
echo $LINE | grep word1 #when i use grep command the loop never ends 
done <a.txt 

編輯:在C等效程序將

char* word="word1" 
while(/*parse all the lines at a text */) 
{ 
fgetline("file_a",&buffer) 
if(strcmp(buffer,word)==0) 
strcpy(word1,"word") //continue the search with this 
} 
+0

你寫buffer.txt和A.TXT閱讀。是對的嗎? – dogbane 2013-04-25 08:34:40

+0

@dogbane是的,這是我想出的最好主意。但這個腳本永遠不會結束!它繼續無限。如果我使它回聲$行它工作正常 – JmRag 2013-04-25 08:46:43

+0

我沒有看到這個循環的重點。爲什麼不簡單地使用'grep word1 a.txt'而不是循環?有些東西你沒有向我們展示。 – dogbane 2013-04-25 08:49:13

回答

0

最容易做的事情是跳過寫入文件完全

if ./program | grep -q word1 &>/dev/null; then 
    echo "TRUE" 
fi 

-q告訴grep的安靜,但它仍然會產生錯誤消息有時,您可以抑制瓦特/ &> /開發/空。如果您希望看到任何錯誤消息,請刪除該部分。 如果你想./program's錯誤和標準輸出由grep的分析,那麼你就需要重定向錯誤輸出到標準輸出像this

0

您的代碼工作正常, while循環將退出。 嘗試在while循環後添加以下行並驗證

echo「While loop Exited!」