0

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

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

2 回答 2

0

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

echo "当循环退出时!"

于 2013-04-25T09:43:40.297 回答
0

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

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

-q 告诉 grep 保持安静,但它偶尔仍会产生错误消息,您可以使用 &>/dev/null 来抑制这些错误消息。如果您希望看到任何错误消息,只需删除该部分即可。如果您希望 ./program 的错误和标准输出由 grep 分析,那么您需要像这样将标准错误重定向到标准输出

于 2013-12-14T00:45:23.543 回答