gpt4 book ai didi

bash - 刷新 sed 中的命令

转载 作者:行者123 更新时间:2023-11-29 09:41:53 25 4
gpt4 key购买 nike

sed 中的日期命令不会在每一行上更新。

我正在尝试学习 sed 和其他用于脚本编写的基本命令。在这个例子中,我试图在 ping 时间旁边附加一个时间戳(另一个用户在上一个问题中提供的解决方案),但是 date 命令似乎并没有在每一行上更新。我试图阅读有关 sed 选项的信息,但到目前为止我的所有尝试都没有结果

ping 8.8.8.8 | sed --unbuffered "s/.*time=\([0-9\.]*\).*/\1 $(date +%T)/"

我很期待

85.2 10:59:26
140 10:59:27
231 10:59:28
97.7 10:59:29
117 10:59:30
80.9 10:59:31

但是我得到了

85.2 10:59:26
140 10:59:26
231 10:59:26
97.7 10:59:26
117 10:59:26
80.9 10:59:26

最佳答案

问题在于 $(date) 仅在 shell 运行 sed 之前计算一次。如果您希望它每次都运行,请尝试将 e 选项替换为 sed。这是 sed 的 GNU 扩展。

$ ping 8.8.8.8 | sed --unbuffered  's/.*time=\([0-9\.]*\).*/echo \1 $(date +%T)/e'

或者如果你想避免 echo$():

$ ping 8.8.8.8 | sed --unbuffered  's/.*time=\([0-9\.]*\).*/date "+\1 %T"/e'

关于bash - 刷新 sed 中的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57427767/

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