Рейтинг:0

сценарий оболочки: как создать словарь из списка?

флаг cn
#!/usr/bin/env bash
b=$(awk -F "[|]" '{print $1}' test.txt)
days=$(awk -F "[{}]" '{print $1}' test.txt) #days
time=$(awk -F "[{}]" '{print $2}' test.txt) #time
#count=`эхо $d | туалет -l`
#эхо $количество
объявить -A обр
для я через $дней;сделать
        эхо $i
    для j в $time;
        эхо $j
    сделано
сделано

тест.txt:

azureuser@disk-bkp:~$ cat test.txt
 Пн Вт Ср Чт Пт {19:00 18:00 16:00 19:00 19:00}

Ниже приведен вывод из приведенного выше кода:

Мо
19:00
18:00
16:00
19:00
19:00
Ту
19:00
18:00
16:00
19:00
19:00
Мы
19:00
18:00
16:00
19:00
19:00
Чт
19:00
18:00
16:00
19:00
19:00
Пт
19:00
18:00
16:00
19:00
19:00

ожидаемый результат:

Мо
 19:00
Ту
18:00

Мы
16:00
Чт
19:00

Пт
19:00

Я хотел создать пары ключ/значение на основе приведенных выше списков, и мне нужно получить стоимость на основе ключ. $дней выход Пн Вт Ср Чт Пт и $ время является 19:00 23:00 16:00 23:00 15:00. Ожидаемый результат Пн:19:00 Вт:23:00 Ср:16:00 Чт:23:00 Пт:15:00

bac0n avatar
флаг cn
Отредактируйте свой вопрос, указав дополнительную информацию о том, как организован *text.txt*.
Рейтинг:0
флаг cn

Если вы хотите использовать awk для настройки массива ключ/значение, вам нужно изменить входной файл на:

Пн 19:00
Вт 18:00
Ср 16:00
Чт 19:00
Пт 19:00

затем

awk '{a[$1]=$2} END {for (i in a) print i, a[i]}' test.txt 

Вт 18:00
Ср 16:00
Пт 19:00
Пн 19:00
Чт 19:00

a[] - это массив ключей/значений, который вам нужен. Но, как вы можете видеть, порядок изменился с помощью awk. Чтобы предотвратить это, мы дополнительно изменим ваш входной файл на:

1Пн 19:00
2Вт 18:00
3Ср 16:00
4 Чт 19:00
5Пт 19:00

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

awk '{a[$1]=$2} END {for (i in a) print i, a[i]}' test.txt | сортировать -k1 | вырезать -c 2- | тр '\n' ' '

Что дает желаемый результат:

Пн 19:00 Вт 18:00 Ср 16:00 Чт 19:00 Пт 19:00

Но имейте в виду, что ключи в массиве a[] теперь содержат дополнительный столбец, который вам может не понадобиться.

hariraj avatar
флаг cn
Привет, мистер Элм, на самом деле я добавляю вывод **tag=`curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/compute/tagsList?api-version =2019-06-04"| jq -r '.[]|select(.name == "auto_stop").value' | вырезать -d '' -f1 | sed 's/[][]//g' ` в test.txt
hariraj avatar
флаг cn
поэтому из файла test.txt содержится **Пн Вт Ср Чт Пт {19:00 18:00 16:00 19:00 19:00}**

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.