Преобразование имен полей в нижний регистр с помощью 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'