shell 脚本 grepping 模式然后回显消息

shell 脚本 grepping 模式然后回显消息

我有一个具有以下模式的文件

=================================================

4601 -- it means completed
4602 -- it means failed
4603 -- it means timed out

=================================================

如果我对文件执行 tail -10,那么我将从上面获得任何人的模式。

我想要 grep 以上三个数字,然后将消息显示为“已完成|失败|超时”。

任何想法?

谢谢!

答案1

这是一个可以用于测试的小脚本 - 在安全的地方运行它,例如 /tmp 左右:

# Prepare
rm *.txt
echo 4601 -- it means completed > f1.txt
echo 4602 -- it means failed > f2.txt
echo 4603 -- it means timed out > f3.txt

# Test
for i in *.txt; do echo
  echo --- Processing file $i
  if grep -qs 4601 $i; then
    echo Completed
  elif grep -qs 4602 $i; then
    echo Failed
  elif grep -qs 4603 $i; then
    echo Timed-Out
  fi
done

感谢@grawity提供的有用提示(请参阅下面他的评论)以避免在此创建不必要的子shell/运行测试/加快速度!

它将创建 3 个文件 - f1.txt、f2.txt 和 f3.txt,每个文件包含您提到的一个编码,然后处理每个文件,生成您想要的消息。

希望这可以帮助。

相关内容