处理当前正在写入的文本文件中的实时最后一行

问题描述 投票:0回答:3

我有一个文本文件,它实际上是打开的,并且记录系统中进程 P1 执行的活动。我想知道如何在 bash 脚本中获取该文件最后一行的实时内容,并“回显”一条消息,如果该行等于“完成”,则说“看到完成”。

bash file-io
3个回答
0
投票

你可以使用这样的东西:

tail -f log.txt | sed -n '/^done$/q' && echo done was seen

说明:


0
投票

这应该适合你:

tail -f log.txt | grep -q -m 1 done && echo done was seen

-m
标记到
grep
意味着“N次匹配后退出”,
&&
确保
echo
语句只会在成功退出
grep
时执行。


0
投票
while read -r LINE; do
    if [[ ${LINE} == done ]]; then
        break
    fi

    printf "\eK%s\r" "${LINE}"
done < <(tail -f file.txt)

\eK
擦除线,可以省略。

© www.soinside.com 2019 - 2024. All rights reserved.