Я хочу использовать Miller Cli для вырезания записей на основе пронумерованной позиции, а не конкретного имени поля.
Например, мне нужно только поле 2 (t
), я пробовал следующее, но кубиков нет.
echo s=green,t=red,a=3,b=4 | mlr cut -f '$[[2]]'
Я думаю, что имя позиционного поля в документации предназначено только для глаголов put
и filter
.
echo s=green,t=red,a=3,b=4 | mlr --csv --implicit-csv-header --headerless-csv-output cut -f 2
Надеюсь, это поможет.
Это хороший обходной путь, но ответ aborruso предпочтительнее, поскольку он более полный и универсальный, спасибо за ваш ответ!
Да, позиционное имя поля предназначено только для глаголов put
и filter
, тогда вы должны использовать управляющие структуры put
и.
Например, если вам нужно четвертое поле, вы можете запустить
echo s=green,t=red,a=3,b=4 | mlr put -q '
@i = 0;
for (k, v in $*) {
@i += 1;
if (@i == 4) {
emit {k: v};
break;
}
}
'
иметь b=4
.
Привет, спасибо, да, это отлично работает и универсально!
Привет, ты пробовал это? stackoverflow.com/a/78913573/757714