Цикл через массив

После бесчисленных минут тестирования, я наконец-то нашел то, что мне нужно.

Нужно создать .Xmodmap со следующим содержимым:

keycode 62 = Mode_switch
keysym a = a A Left
keysym d = d D Right
keysym s = s S Down
keysym w = w W Up

62 - это ключевой код R_Shift.

Он работает идеально.

1
04.09.2014, 00:01
4 ответа

Вы можете перебирать элементы в массиве awk a, используя синтаксис for (i в a). Например, вы можете сделать что-то вроде

awk '{split($NF,a,","); $NF=""; for (i in a) sub(i"=",a[i]"=",$0); print}' list.txt
1
27.01.2020, 23:52

Если всегда есть 3 пункта (x=y) и в строках нет пробела, то это awk утверждение должно сработать:

awk -F',| |=' '{printf "%s %s %s %s %s=%s %s=%s %s=%s\n", \
$1, $2, $3, $4, $11, $6, $12, $8, $13, $10}' list.txt

Пояснение:

  • -F',| |=': установите разделитель полей на ,, пробел и =
  • '{printf .... распечатать значения в нужном формате
  • list.txt входного файла
0
27.01.2020, 23:52

Этот скрипт должен работать на любое количество предметов подряд.

во время чтения делать valtype = ($ (echo $ line | awk '{print $ nf}' | tr ',' ''))) vals = ($ (echo $ line | awk '{$ nf = ""; $ 1 = ""; $ 2 = ""; $ 3 = ""; $ 4 = ""; Печать $ 0}' | tr [1234567890] '' | tr '=' ''))) Echo $ Line | awk '{Печать $ 1 "" $ 2 "" $ 3 "" $ 4}' | tr -d '\ n' numvals = $ {# vals [@]} Для i в $ (SEQ 0 $ ((numvals-1))) делать echo -n "" $ {valtype [$ i]} "=" $ {vals [$ i]} сделано эхо "" " Сделано

Объяснение:

Valtype содержит массив отдельных элементов запяты.

Vals содержит соответствующие значения между 4-го и последней позициями в строке, с числами и равными удаленными знаками.

Закрепляясь по количеству значений в массивах, сопоставленные значения в обоих массивах могут быть упомянутыми.

0
27.01.2020, 23:52
set '.\(=.[^ ]*\) ' '\([^,]*\),'
sed "s/\$/,/;s/$1$1$1$2$2$2/\4\1 \5\2 \6\3/
" <<\DATA
List of animals SET 1=Dog 2=Crow 3=Snake Pet,bird,reptile
List of Countries SET 1=France 2=Singapore 3=Columbia Europe,Asia,SouthAmerica
List of Parts SET 1=KeyBoard 2=Speaker 3=LEDpanel Computer,AudioPlayer,Television
List of Cities SET 1=Amsterdam 2=KualLumpur 3=Paris Netherlands,Malaysia,France
DATA

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

вывод

List of animals SET Pet=Dog bird=Crow reptile=Snake
List of Countries SET Europe=France Asia=Singapore SouthAmerica=Columbia
List of Parts SET Computer=KeyBoard AudioPlayer=Speaker Television=LEDpanel
List of Cities SET Netherlands=Amsterdam Malaysia=KualLumpur France=Paris
0
27.01.2020, 23:52

Теги

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