Shell脚本中的跟踪词

时间:2013-10-07 12:35:50

标签: regex shell

我正在尝试寻找无malloc系列。考虑一下我们有1000个测试用例。人们可能会忘记释放ptr。请帮我优化脚本。

测试中的样本文件

Test(func_class,func1)
{
  int i,j;
  char* ptr = (char*) malloc(sizeof(char));
  free(ptr);
}

Test(func_class,func1)
{
  int i,j;
  char* ptr = (char*) malloc(sizeof(char));
  / Memory Leak / 
}

正在开发的脚本:

export MY_ROOT=`pwd`
_COUNT=0
pwd
_COUNT_WORD=0
filename=test.c
cat $filename | while read line
do 
    echo "Reading Line = $LINE" 
    for word in $line
    do
    _COUNT_WORD=$(($_COUNT_WORD+1))
    echo $_COUNT_WORD $word    
    if [ "$word" == "malloc\(sizeof\(char\)\);" ]; then    
        _MALLOC_FLAG=1   #this part of the code is not reached
        echo "Malloc Flag Hi"
        echo $word[2]
    fi
    done
    _COUNT_WORD=0
done 

我在匹配malloc正则表达式时遇到了一些问题。我知道脚本需要进行大量修改,因为我们必须找到编写malloc的个人模式。

1 个答案:

答案 0 :(得分:0)

还有其他方法可以检查:

使用awk:

awk '/malloc/ || /free/{count++;}END{printf "%d",count}' fileundertest

这将在文件中搜索“malloc”和“free”字样,并打印出计数。如果算数是偶数你可以说每个malloc都有免费的。

使用grep:

grep -c "malloc" fileundertest 

这将计算文件

中的malloc单词

类似地,

grep -c "free" fileundertest

列出行号

grep -n "malloc" fileundertest