gpt4 book ai didi

linux - 如何关闭 grep 行缓冲

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:31 25 4
gpt4 key购买 nike

我正在尝试从 Asterisk 日志中实时提取电话号码。我正在使用 tail 来执行此操作,问题是根据我的理解,grep 使用行缓冲,并且由于 tail 没有结束,所以它会等到 tail 刷新,但我需要它通过系统时的数字。这是我的代码

    tail -f /var/log/asterisk/messages | grep  @default | awk -F ' ' '{ print $11 }' | awk -F  '[^0-9]*' '{ print $2 }'

我还想确保它返回的模式也是一个 10 位数字,因为它会返回较小的 1-6 位数字。

提前致谢

正确的是: 很接近:这是我尝试过滤的数据的示例

    [Jul 17 12:11:00] VERBOSE[13992] logger.c: [Jul 17 12:11:00]     -- Executing [h@default:1] DeadAGI("Local/91201xxx0249@default-abb1,2", "agi://127.0.0.1:4577/call_log--HVcauses--PRI-----NODEBUG-----0-----CANCEL----------") in new stack

我想要做的是在“@default”之前提取 10 位数字的电话号码

最佳答案

修改#2

实际上tail不是实时的。默认情况下,它每 1 秒检查一次新值(通过 -s 选项更改)。

我改进了Kevin的回答一点点。我假设第 12 个字段(而不是第 11 个)包含数字 ("DeadAGI("Local/91201xxx0249@default-abb1,2","- 它不是 10 位数字!我认为是):

tail -f /var/log/asterisk/messages | 
awk 'match($12, /[^0-9]91([0-9]{10})@default/, a) {print a[1]}'

仅当该行包含“@default”并且第 12 个字段恰好包含 10 个连续数字时才会打印。

关于linux - 如何关闭 grep 行缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com