Miller 是一個命令列工具,用於查詢、調整和重新格式化各種格式的資料檔案,包括 CSV、TSV、JSON 和 JSON Lines。
使用者體驗
Miller 6 的功能主要由 2021 年 Miller 使用者調查結果和 GitHub Issues 中的大量反饋來推動。
效能
在簡單處理方面,效能與 Miller 5 相當,在複雜處理鏈方面,Miller 6 由於改進了多核利用率,因此效能遠遠優於 Miller 5,除此之外,CSV I/O 也有明顯改善。
檔案改進
檔案和線上幫助(mlr --help
)已經被完全重寫。
改進 Windows 體驗
Miller 最初是為類 Unix 作業系統開發的,包括 Linux 和 macOS。Miller 5.2.0 成為了第一個支援 Windows 的版本。從 6.0.0 版本開始,Miller 直接在 Windows 上構建。
現在,Windows 上的體驗與 Linux,NetBSD / FreeBSD和 macOS 上的體驗幾乎相同,MSYS2 不再是必需的 。
輸出著色
每當輸出到終端時,Miller 都會對鍵和值使用單獨的可自定義顏色。
改進的命令列解析
Miller 6 具有 getoptish 命令列解析:
xyz
自動擴充套件為x -y -z
,例如mlr cut -of shape,flag
與mlr cut -o -f shape,flag
相同-foo=bar
會自動擴充套件為-foo bar
,因此(例如mlr --ifs=comma
與mlr --ifs comma
相同.
改進了 DSL 解析的錯誤訊息
對於mlr put
和mlr filter
,解析錯誤訊息現在包含位置資訊:
mlr: cannot parse DSL expression. Parse error on token ">" at line 63 columnn 7.
指令碼
指令碼現在更容易支援帶有sh
的#!
,以及現在支援帶有mlr -s
的#!
。對於 Windows,也可以使用mlr -s
。這些變化有助於減少反斜槓引起的混亂,讓使用者在少打字的同時做更多的事情。
改進的國際化支援
現在可以用 UTF-8 編寫欄位名稱、區域性變數等,例如mlr --c2p filter '$σχήμα == "κύκλος"' παράδειγμα.csv
。
改進的日期時間/時區支援
包括支援通過函數引數指定時區,作為TZ
環境變數的替代方法。
對壓縮輸入的程序內支援
除了--prepipe gunzip
之外,在 Miller 6 中現在還可以使用--gzin
標誌。如果你的檔案以.gz
結尾,那你甚至無需這樣操作,Miller 將通過副檔名自動檢測並自動解壓縮mlr --csv cat foo.csv.gz.z
支援讀取網路網址
可以讀取帶有https://
和http://
和file://
字首的輸入:
mlr --csv sort -f shape \\ <https://raw.githubusercontent.com/johnkerl/miller/main/docs/src/gz-example.csv.gz>
改進 JSON / JSON Lines 支援和陣列
陣列現在在 Miller 的put
/filter
程式語言中受支援,此外array
現在是一個關鍵字,因此它不再可用作區域性變數或 UDF 名稱。
改進數值轉換
Miller 6 最核心的部分是深度重構如何從檔案內容解析資料值、如何推斷型別以及如何將它們轉換回文字到輸出檔案。
在 Miller 5 及更低版本中,所有值都儲存為字串,然後僅根據需要轉換為 int/float。
在 Miller 6 中,可解析為 int/float 的東西從讀取輸入資料的那一刻起就被視為 int/float,並且它們通過動詞鏈傳遞。
重複欄位名稱的重複資料刪除
預設情況下,除 JSON / JSON Lines 之外的所有檔案格式的欄位名稱都會被重複資料刪除。
對 IFS 和 IPS 正規表示式支援
IFS
和IPS
可以是正規表示式:分別使用--ifs-regex
或--ips-regex
代替--ifs
或--ips
。還可以使用--ifs space --repifs
或--ifs-regex '()+'
。
大小寫摺疊排序選項
sort 現在接受-c
和-cr
選項,用於大小寫摺疊的升序/降序排序。
更多詳情可檢視: