使用 miller 将字段名称转换为小写
Convert field names to lower case using 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'
打印
\LA \LB \LC
1 2 3
但我想打印出来
a b c
1 2 3
两个示例方式:
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 {[=10=] = tolower([=10=])} 1'
我想使用 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'
打印
\LA \LB \LC
1 2 3
但我想打印出来
a b c
1 2 3
两个示例方式:
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 {[=10=] = tolower([=10=])} 1'