Если только строка, которую вы хотите извлечь, не содержит ;
, проще всего заменить .
(соответствует любому одиночному символу) с [^;]
(соответствует любому символу, кроме ;
)
$ printf '%s\n' "$my_string" | grep -oP '(?<='baz=')[^;]*'
222
С grep
, связанным с libpcre 7.2 или новее, вы также можете упростить просмотр назад, используя форму \K
:
$ printf '%s\n' "$my_string" | grep -oP 'baz=\K[^;]*'
222
Они будут печатать все вхождения в строке и предполагать, что соответствующий текст не содержит символов новой строки (поскольку grep
обрабатывает каждую строку ввода отдельно).
Привязка, которую вы ищете, - forward-char
. Обычно клавиша → (стрелка вправо) и Ctrl - F привязаны к нему и принимают предложение рыбы. Обратите внимание, что это отличается от автозаполнения, соответствующего complete-and-search
и привязанного к вкладке по умолчанию.
Чтобы добавить Ctrl - E в этот список, вы можете сделать:
bind \ce forward-char