Как я могу (безболезненно) разделить или поменять местами «последний, первый» в записи в Miller?

В восьмеричном дампе нет управляющих символов (они были бы 033).

Есть несколько 8-битных управляющих кодов (обычно не реализуемых большинством терминалов, кроме xterm). Восьмеричный 232 - это шестнадцатеричный 0x9a, и (ссылаясь на XTerm Control Sequences):

ESC Z
     Return Terminal ID (DECID is 0x9a).  Obsolete form of CSI c  (DA).

...
CSI Ps c  Send Device Attributes (Primary DA).
            Ps = 0  or omitted -> request attributes from terminal.  The
          response depends on the decTerminalID resource setting.
...
            -> CSI ? 6 c  ("VT102")

Эти символы являются ответом терминала на управляющий символ DECID. Детали ответа зависят от эмулятора терминала (который не был упомянут в вопросе).

1
08.03.2019, 03:58
2 ответа

Не знаю, понимаю ли я вашу просьбу.

Если я побегу

echo -e "last_first\nLastName, Firstname" | \
mlr --t2j --jlistwrap --jvstack nest --explode --values --across-fields --nested-fs "," -f last_first \
then clean-whitespace

У меня есть

[
{
  "last_first_1": "LastName",
  "last_first_2": "Firstname"
}
]

И если я побегу

echo -e "last_first\nLastName, Firstname" | \
mlr --tsv nest --explode --values --across-fields --nested-fs "," -f last_first \
then clean-whitespace

У меня есть

last_first_1    last_first_2
LastName        Firstname
3
27.01.2020, 23:30

Вот как переключить LastName, FirstNameна FirstName LastNameс помощью выражений DSL:

echo -e "last_first\nLastName, Firstname\nAnotherLast, AnotherFirst" \
  | mlr --t2j \
    put -q 'o=splitnv($last_first,",");
            first_last=strip(o[2]). " ". o[1];
            emit first_last'

# result:
# { "first_last": "Firstname LastName" }
# { "first_last": "AnotherFirst AnotherLast" }

Я думаю, что тот факт, что emitкажется необходимым (? )была ключевой частью, которую я раньше не понимал.

Это, к сожалению, не намного проще, чем использование глагола nestи всех его необходимых флагов.

0
27.01.2020, 23:30

Теги

Похожие вопросы