regex, который работает с sed, не удостоенным $ {var // search / replace}

Python dicts не упорядочены. Обычно это не проблема, поскольку наиболее распространенным вариантом использования является поиск.

Самый простой способ сделать то, что вы хотите, - создать collections.OrderedDict вставку элементов в отсортированном порядке.

ordered_dict = collections.OrderedDict([(k, d[k]) for k in sorted(d.keys())])

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

Значения печати, отсортированные по ключам:

# create the dict
d = {k1:v1, k2:v2,...}
# iterate by keys in sorted order
for k in sorted(d.keys()):
    value = d[k]
    # do something with k, value like print
    print k, value

Получить список значений, отсортированных по клавишам:

values = [d[k] for k in sorted(d.keys())]
0
задан Charles Duffy 13 July 2018 в 19:53
поделиться

1 ответ

${foo//$match/$replace} использует шаблоны fnmatch (glob-style), а не любую форму, совместимую с форматами синтаксиса BRE / ERE / PCRE или другими традиционными форматами синтаксиса regex.

input="test_data(123)"
match='data(*)'
replace='xyz'

result=${input//$match/$replace}
echo "$result"

... правильно испускает test_xyz .

2
ответ дан Charles Duffy 17 August 2018 в 12:10
поделиться
Другие вопросы по тегам:

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