【问题标题】:Convert field names to lower case using miller使用 miller 将字段名称转换为小写
【发布时间】:2022-12-04 06:48:51
【问题描述】:

我想使用 miller (mlr) 将列名转换为小写。我得到的最接近的是使用带有正则表达式的 rename 动词。 \L 应该改变大小写,但是列名的前缀是 "\L"

我使用的是 macOS Catalina 和 miller 5.10.0

echo -e 'A,B,C\n1,2,3' | mlr --csv --opprint rename -r '(.*),\L\1'

印刷

\LA \LB \LC
1   2   3

但我想打印

a b c
1 2 3

【问题讨论】:

  • 你试过我的解决方案了吗?
  • 这两个都可以,谢谢!看来米勒的DSL很强大。

标签: unix-text-processing miller


【解决方案1】:

两种示例方式:

echo -e 'A,B,C
1,2,3' | mlr --csv put '
  map inrec = $*;
  $* = {};
  for (oldkey, value in inrec) {
    newkey = tolower(oldkey);
    $[newkey] = value;
  }
'

或者

echo -e 'A,B,C
1,2,3' | mlr --csv -N put -S 'if (NR == 1) {for (k in $*) {$[k] = tolower($[k])}}'

【讨论】:

    【解决方案2】:

    有时,标准工具更易于使用:

    echo -e 'A,B,C
    1,2,3' | awk 'NR == 1 {print tolower($0); next} 1'
    

    或与米勒:

    echo -e 'A,B,C
    1,2,3' |
    mlr --csv -N put 'NR == 1 {for (k,v in $*) {$[k] = tolower(v)}}'
    

    【讨论】:

    • @Favadona 这是一个很好的解决方案,可能是我将来会使用的解决方案,因为它非常简单。最初的问题要求使用 miller 回答,所以我将 aborruso 的回答保留为已接受的答案。
    猜你喜欢
    • 2017-07-16
    • 2019-02-22
    • 1970-01-01
    • 2022-10-07
    • 2012-03-05
    • 2016-02-06
    • 2021-09-08
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多