我有一个从 clojure 应用程序创建的 edn 文件。 我想直接编辑文件来修改一些值,但不知道如何轻松完成。 我知道我可以在像 sublime 这样的文本编辑器中编辑它,但整个文件位于第一行,没有换行符。 有没有一些工具可以将其分解为字段、记录或键值对,以使其更容易,而无需学习 clojure?
更详细: 有问题的应用程序是 Logseq。 它维护一个包含所有页面的文件,其中包含每个页面的创建日期和更新日期。 创建日期不正确,所以我打算直接编辑它。 由于我不了解 clojure,所以我无法使用 pprint。 在 Sublime 中它被列为:
[{:block/name "05-24-2021", :block/created-at 1621814400000, :block/updated-at 1621814400000} {:block/name "06-04-2021", :block/created-at 1622764800000, :block/updated-at 1622764800000} {:block/name "openings study", :block/created-at 1627400166344, :block/updated-at 1627400166344} {:block/name "progressive summarization", :block/created-at 1627587170901, :block/updated-at 1627587770818}
我希望它看起来像什么,以便于编辑:
[{
:block/name "05-24-2021", :block/created-at 1621814400000, :block/updated-at 1621814400000}
{:block/name "06-04-2021", :block/created-at 1622764800000, :block/updated-at 1622764800000}
{:block/name "openings study", :block/created-at 1627400166344, :block/updated-at 1627400166344}
{:block/name "progressive summarization", :block/created-at 1627587170901, :block/updated-at 1627587770818}
etc.
boot
,您可以通过以下脚本传输代码:
#!/usr/bin/env boot
(require '[clojure.edn :as edn]
'[clojure.pprint :refer [pprint]])
(defn -main [& args] (pprint (edn/read *in*)))
...如(如果以上内容另存为
pprint-edn
):
pprint-edn <unformatted.edn >formatted.edn
如果你有 clojure CLI已安装,您可以运行:
clojure -e "(do (require 'clojure.edn 'clojure.pprint) (clojure.pprint/pprint (clojure.edn/read *in*)))" < in.edn > out.edn