gpt4 book ai didi

clojure - 如何使用 babashka 过滤 tail 的输出

转载 作者:行者123 更新时间:2023-12-04 14:50:07 27 4
gpt4 key购买 nike

我想过滤和修改 tail 命令的输出。这是我想出的:

#!/usr/bin/env bb

(ns script
(:require
[clojure.java.io :as io]
[clojure.string :as str]
))

(->> (line-seq (io/reader *in*)
(filter #(re-find #"^\[.*CONSOLE" %))
(map #(str "carpenter " %)))

它适用于正常的尾部。但我想将它用于“tail -f”命令。有什么想法吗?

谢谢

最佳答案

此示例开始向文件写入两种消息:HELLO 和 BYE。然后它启动一个 tail -f 进程来观察文件,然后从该进程的输出中读取并只捕获 BYE 行并在前面打印一个自定义字符串。

(ns tail-example
(:require [babashka.process :as p]
[clojure.java.io :as io]))

(future
(loop []
(spit "my-file.txt" "HELLO\n" :append true)
(spit "my-file.txt" "BYE\n" :append true)
(Thread/sleep 1)
(recur)))

(def tail (p/process
(p/tokenize "tail -f my-file.txt")
;; send stderr to stderr of bb, leave out stream unmodified
{:err :inherit}))

(let [rdr (io/reader (:out tail))]
(binding [*in* rdr]
(loop []
(when-let [l (read-line)]
(when (re-matches #"BYE" l)
(println (str "[log] " l)))
(recur)))))

关于clojure - 如何使用 babashka 过滤 tail 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69241046/

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