![shell 脚本 grepping 模式然后回显消息](https://linux22.com/image/1306095/shell%20%E8%84%9A%E6%9C%AC%20grepping%20%E6%A8%A1%E5%BC%8F%E7%84%B6%E5%90%8E%E5%9B%9E%E6%98%BE%E6%B6%88%E6%81%AF.png)
我有一个具有以下模式的文件
=================================================
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,每个文件包含您提到的一个编码,然后处理每个文件,生成您想要的消息。
希望这可以帮助。