Построение хвост УМК


Я написал это без долгих раздумий:

(defn- tail-cmd
  "Construct a tail cmd"
  [file n & ignore-patterns]
  (clojure.string/join
   " | "
   (flatten [(format "tail -n %s -f %s" (or n 200) file)
             (map #(format "grep --line-buffered -v \"%s\"" %)
                  ignore-patterns)])))

На дальнейших размышлений, я не уверен, если это может еще больше упростить. Это может быть?



225
5
задан 3 ноября 2011 в 03:11 Источник Поделиться
Комментарии
1 ответ

Вы можете или не можете рассмотреть это проще:

(defn tail-cmd-2
"Construct a tail cmd"
[file n & ignore-patterns]
(str "cat "
file
" | "
(apply str (map #(format "grep -v \"%s\" | " %) ignore-patterns))
"tail -f "
(if n (str "-n " n))))

Или если вы готовы использовать нестандартные языке Clojure.ядро.библиотека strint, вы можете сделать следующее.

(defn tail-cmd-5
"Construct a tail cmd"
[file n & ignore-patterns]
(let [greps (apply str (for [p ignore-patterns] (format "grep -v \"%s\" | " p)))
minus-n (if n (str "-n " n))]
(<< "cat ~{file} | ~{greps} tail -f ~{minus-n}")))

Вот исходник:
https://github.com/clojure/core.incubator

3
ответ дан 3 ноября 2011 в 07:11 Источник Поделиться