Как создать карту хеширования (key: val) в оболочке? - PullRequest
1 голос
/ 12 мая 2019

Используя bash, как я могу создать хэш-карту, чтобы я мог читать и писать строки на основе ключа?

Какой-то псевдокод:

    i = 0
    while read text1:
        echo $line1 of text1
        line2 = text2[i % 3] 
        echo $line2

## so text2 has 3 lines, I'd like to create hashmap so that I could get the line from text2 based on the line number.


Sample input:
text1:
111111
222222
333333
444444
555555
666666


text2:
AAAAAA
BBBBBB
CCCCCC

And expected output:
111111
AAAAAA
222222
BBBBBB
333333
CCCCCC
444444
AAAAAA
555555
BBBBBB
666666
CCCCCC

Спасибо

1 Ответ

2 голосов
/ 12 мая 2019

Вот как действительно делать то, что вы пытаетесь делать в UNIX:

$ awk 'NR==FNR{a[++c]=$0;next} {print $0 ORS a[(FNR-1)%c+1]}' text2 text1
111111
AAAAAA
222222
BBBBBB
333333
CCCCCC
444444
AAAAAA
555555
BBBBBB
666666
CCCCCC

Оболочка - это среда, из которой можно вызывать инструменты с языком для последовательности этих вызовов, а не инструмент для манипулирования текстом. Люди, которые изобрели оболочку, также изобрели awk для вызова оболочки для манипулирования текстом, поэтому просто сделайте это и избегайте всех головных болей, с которыми вы столкнетесь, если попытаетесь обойти это. См. «Почему используется цикл оболочки для обработки текста, который считается плохой практикой» , чтобы узнать о некоторых проблемах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...