在shell上扫描程序的输出

时间:2013-04-25 08:28:16

标签: linux shell output

您好我正在尝试在Linux中创建一个脚本文件,其输出为o prgram的输出并扫描它以查找存在多少个词的出现。为了更清楚,我想扫描输出并存储变量在该输出中存在多少次单词。我是linux中的scripitin的新手。我尝试将输出存储在一个文件中,然后逐行扫描,以便找到单词,但是由于somre原因,我用来解析它的循环永远不会结束。你能救我吗?

./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 
}

2 个答案:

答案 0 :(得分:0)

您的代码运行正常, while循环将退出。 尝试在while循环后添加以下行并验证

echo“While loop Exited!”

答案 1 :(得分:0)

最简单的方法是完全跳过写入文件

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

-q告诉grep要安静,但它偶尔会产生错误消息,你可以用&amp;&gt; / dev / null来抑制它。如果您希望看到任何错误消息,请删除该部分。 如果你想通过grep分析./program的错误和stdout那么你需要将stderr重定向到stdout,如this