Чем сортировка массивов массивов отличается от многомерных массивов в awk? - PullRequest
3 голосов
/ 26 марта 2020

Я подошел к проблеме, чтобы перечислить набор элементов, которые имеют компоненты, которые, в свою очередь, имеют свойства в awk.

Я попытался подойти к проблеме двумя способами.

1) Определить массив list[item-number,component-number][properties]. 2) Определить массив list[item-number][component-number][properties].

Это было во многих отношениях интересно, поскольку я заметил (2) поддерживает порядок вставки, а (1) - нет. Я знаю, что массивы ассоциативны в awk, и это может быть совпадением. Однако, поскольку порядок вставки важен в моем случае (а также я хочу узнать больше о awk), я хотел бы знать, так ли это и почему.

Есть идеи? БР Патрик

1 Ответ

5 голосов
/ 26 марта 2020

Ни один из подходов не сохраняет никакой информации о порядке вставки, если кажется, что любой из них делает, то это просто совпадение. Если порядок вставки важен для вас, вам нужно написать некоторый код для отслеживания этого порядка, например,

key = foo FS bar
if ( !(key in list) ) {
    keys[++numKeys] = key
}
list[key] = whatever

даст вам массив keys[] индексов в порядке их вставки и массив list[], который отображает каждый ключ на его значение, так что вы можете позже сделать:

for (keyNr=1; keyNr<=numKeys; keyNr++) {
    key = keys[keyNr]
    print list[key]
}

или аналогично, чтобы напечатать содержимое list[] в порядке их вставки.

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