Преобразование имен полей в нижний регистр с помощью Miller

Я хотел бы использовать 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

2 ответа

Два примера способов:

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

или же

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

Иногда проще использовать стандартные инструменты:

      echo -e 'A,B,C\n1,2,3' | awk 'NR == 1 {$0 = tolower($0)} 1'
Другие вопросы по тегам