перейти к предыдущему символу 'x' в bash

Использование предшественника sed ed:

ed -s input <<< $'/^reader_1 =\n/^port =\nc\nport = 22443,\n.\nw\nq'

Это отправляет edстроку команд ANSI -, цитируемую здесь -, для редактирования файла. Команды в последовательности:

  1. /^reader_1 =--поиск строки, начинающейся с "reader _1="
  2. /^port =--искать оттуда строку, начинающуюся с "port="
  3. c--изменить эту строку
  4. port = 22443,--к этому тексту
  5. .--конец текста замены
  6. w--записать файл на диск
  7. q--выйтиed

Вы можете ужесточить или ослабить регулярные выражения, чтобы они соответствовали более или менее точно, в соответствии с вашими фактическими данными.

0
06.02.2021, 10:41
1 ответ

Функция readline character-searchпо умолчанию привязана к Ctrl+] . Это то, что вы упоминаете в своем вопросе:

$ bind -q character-search
character-search can be invoked via "\C-]".

Функция character-search-backwardпривязана к Esc + Ctrl+]:

$ bind -q character-search-backward
character-search-backward can be invoked via "\M-\C-]".

\M— это Esc , а не Alt .

Итак, для поиска xв обратном направлении используйте Esc + Ctrl+] , а затем x .

Поскольку Esc совпадает с Ctrl+[ , может быть быстрее набрать Ctrl+[ + Ctrl+] для поиска назад для конкретного персонажа.

Очевидно, что в режиме редактирования командной строки Vi(set -o vi)вы можете просто использовать f и F в обычном режиме, как в Vi, с которым вы, кажется, знакомы.

1
18.03.2021, 22:32

Теги

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