Bash脚本输出到控制台和文件

时间:2017-08-08 10:07:05

标签: linux bash grep tee

我需要一个小脚本来搜索日志文件中的字符串并计算行数。因为这可能需要一段时间,我也想要输出" grep"显示在控制台中。我的想法是这样的:

grep -irl "System out of memory" | tee /tmp/checkoom.tmp
COUNT=(cat /tmp/checkoom.tmp |wc -l)
echo $COUNT logs found.

但它不起作用。我没有得到任何输出,tmp文件被创建但似乎是空的。

3 个答案:

答案 0 :(得分:0)

您忘记提供搜索的起始目录:

grep -irl "System out of memory" <somewhere> | tee /tmp/checkoom.tmp

答案 1 :(得分:0)

以下是从/ var / log / messages获取usb记录的一条线路:

echo "$(grep -i '/lib/udev/usb' /var/log/messages > ~/yourFile ; cat ~/yourFile | wc -l ) logs found"

希望你发现它有用

答案 2 :(得分:0)

脚本中有两个错误:

  • grep的路径
  • $()用于执行命令。必须在分配变量COUNT
  • 时添加

更新了脚本:

#!/bin/bash
grep -irl "System out of memory" <path to search> | tee /tmp/checkoom.tmp
COUNT=$(cat /tmp/checkoom.tmp | wc -l)
echo "$COUNT" logs found.

你也可以在grep中使用-F选项。 -F代表Fixed Strings