如何编辑edn文件?

How to edit edn file?

我有一个从 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.

假设您在 PATH 中安装了 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