使用正则表达式从文件中提取信息

时间:2012-04-03 16:06:11

标签: regex grep

grep -H "httpd" /Users/sars/logs/testlogs/2012-04-02*/*/top

我正在使用文件并查找耗费超过0.00%CPU的httpd。所以输出看起来像这样

/Users/sars/logs/2012-04-03-021/server1/top:10182 root            15  96    0 50352K 12880K ucond   2  48:01  0.00% httpd 

我只希望在此输出行

上看到结果的输出不是0.00%

2 个答案:

答案 0 :(得分:1)

您可以再次grep

grep -H "httpd" /Users/sars/logs/testlogs/2012-04-02*/*/top | grep -vw 0.00%

答案 1 :(得分:0)

我建议你单独看看awk而不是grep。您可以获得更大的灵活性,而不必处理如此多的管道。

awk '
  BEGIN {
    minimum=10; # only show lines greater than this percent
  }

  # skip lines that are not httpd
  $12 != "httpd" { next; }

  # remove the "%" from the cpu usage column
  { sub(/%/, "", $11) }

  # print lines whose % is higher than minimum
  $11 > minimum { print; }
' /Users/sars/logs/testlogs/2012-04-02*/*/top

可能需要进行一些调整;我没有看到你的数据,所以我实际上没有测试过这个。

如果我自己这样做,我会将awk脚本存储为一个独立的工具,可以在shell脚本中调用,或者我将它嵌入到函数的shell脚本中。如果不知道你打算如何使用它,就无法真正推荐。