我有一个文本文件,它实际上是打开的,并且记录系统中进程 P1 执行的活动。我想知道如何在 bash 脚本中获取该文件最后一行的实时内容,并“回显”一条消息,如果该行等于“完成”,则说“看到完成”。
你可以使用这样的东西:
tail -f log.txt | sed -n '/^done$/q' && echo done was seen
说明:
tail -f
将随着文件的增长输出附加数据sed -n '/^done$/q'
的行时,
done
将退出,结束命令管道。这应该适合你:
tail -f log.txt | grep -q -m 1 done && echo done was seen
-m
标记到grep
意味着“N次匹配后退出”,&&
确保echo
语句只会在成功退出grep
时执行。
while read -r LINE; do
if [[ ${LINE} == done ]]; then
break
fi
printf "\eK%s\r" "${LINE}"
done < <(tail -f file.txt)
\eK
是擦除线,可以省略。