Почему в терминале работает удаление, но не клавиши со стрелками?

Заменить 3-е поле (, где «поле» — это «что угодно, кроме вертикальных черт, ноль или более раз, за ​​которыми следует вертикальная черта» )ничем:

awk '{$0=gensub(/[^|]*\|/, "", 3); print $0}' input

Очевидно, вы хотите удалить "test5232.lop" в любом месте строки:

sed -i 's/|test5232\.lop//' input

(хотя любое решение, включая sed -i, создает временный файл)

0
12.06.2019, 20:06
1 ответ

Поскольку возможности редактирования строки драйвера терминала весьма примитивны и не включают в себя такие вещи, как перемещение точки вставки влево и вправо.

Что они включают в себя:

  • удаление последнего символа(VERASE/ erase, BackSpace)
  • удаление последнего слова(VWERASE/ werase, управление -W)
  • удаление всей строки(VKILL/ kill, Управление -U)

Они также не могут связать несколько последовательностей клавиш (, так как escape-последовательности, отправляемые левой -и правой -клавишами со стрелками, обычно )относятся к его специальным действиям.

И, конечно же, VERASEи VWERASEне поддерживают Unicode -; В Linux есть формальный IUTF8флаг (, который работает с простыми данными и лучше, чем ничего ), но он не знает об нулевых -модификаторах ширины, метках направления и т. д.

Дополнительные сведения см. на справочных страницах stty(1)и termios(3).

1
28.01.2020, 02:40

Теги

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