linux - 使用 awk 尾部文件并执行一组命令

标签 linux shell awk tail

我想在日志文件上运行 tail 并在该日志文件中的字符串匹配后执行一组命令。在执行结束时,tail 命令应该退出。

我的尝试如下所示。似乎在文件中找到的任何字符串都会导致 tail 退出。如果匹配,则将运行命令集并且 tail 将按预期退出。

为什么即使没有匹配项,tail 也会退出?

这是我的命令:

tail -f /logs/logfile.log | awk '/string_to_match/ { system("cp /s1/* /d1") }
                                                   {system("cp /s2/* /d2") } 
                                                   { system("cp /s3/* /d3") }      
                                                   { system("pkill tail") } '

感谢您的帮助。

最佳答案

@MRE:尝试:(我认为我们不需要提及这么多系统调用,尽管我根本没有测试过)。

tail -f /logs/logfile.log | 
awk '/string_to_match/ {
          system("cp /s1/* /d1; cp /s2/* /d2; cp /s3/* /d3; pkill tail") }'

请尝试一次,然后让我们知道结果如何。

关于linux - 使用 awk 尾部文件并执行一组命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42401499/

相关文章:

linux - sdl支持ARM lcd视频显示吗?

linux - 如何递归复制文件夹及其子文件夹下的文件作为符号链接(symbolic link)

linux - Awk 和 Grep 的问题

java - MPJ - 使用 mpjboot 时出现 Express 错误

mysql - 搜索与模式匹配的表然后截断它们的脚本

shell - shell 的 `source` 是 POSIX 标准的吗?

linux - 使用此语法分配 bash 变量值时有什么区别?

linux - Grep 来自文件的输入和基于搜索的列求和

bash - 找到匹配项后如何添加换行符

linux - WAN 上的 SSH 远程登录失败,但 lan 上的登录可以