2016-12-15 4 views
0

В ZSH, команда ZLE может иметь несколько клавиш, например .:Эквивалент функции агрегации SQL group_concat() с использованием Unix?

▶ bindkey | grep accept-and-hold 
"^[A" accept-and-hold 
"^[a" accept-and-hold 

Как получить список из bindkey, собирающих всех ключевых последовательностей для данной команды в одну строку?

Одно из решений с помощью q:

▶ bindkey | q "select c2, group_concat(c1) from - group by c2" | grep accept-and-hold 
accept-and-hold ^[A,^[a 

Но мне интересно, если есть способ сделать это без использования используя причудливые инструменты, такие как perl, awk, sed, q и т.д.

ответ

0

Некоторые awk на помощь:

% bindkey | awk -v zle=accept-and-hold '$2==zle{s=s" "$1};END{print zle s}' 
accept-and-hold "^[A" "^[a" 

И если вы действительно хотите, чтобы котировки были удалены:

% bindkey | awk -v zle=accept-and-hold '$2==zle{s=s" "gensub(/\"/,"","g",$1)};END{print zle s}' 
accept-and-hold ^[A ^[a 
+0

Мне было интересно, был ли способ без 'awk'. –

 Смежные вопросы

  • Нет связанных вопросов^_^