Инструмент для управления файлами yaml?

Вы не должны использовать линейные утилиты, такие как awkи sed. Эти утилиты будут выполнять системный вызов read()для каждой строки во входном файле (см. ответ о том, почему это так ). Если у вас много строк, это будет огромной потерей производительности.

Поскольку ваш файл имеет размер 4 ТБ, я предполагаю, что в нем много строк. Таким образом, даже wc -lбудет производить множество read()системных вызовов, поскольку он считывает только 16384байт за вызов (в моей системе ). В любом случае это будет улучшение по сравнению с awkи sed. Лучший метод -, если только вы не пишете собственную программу -, может быть просто

cat file | wc -l

Это не бесполезное использование cat, потому что catчитает фрагменты 131072байтов на read()системный вызов (в моей системе )и wc -lвыдаст больше, но не в файл напрямую, а не на трубе. Но, тем не менее, catпытается прочитать как можно больше за системный вызов.

1
04.11.2019, 13:42
1 ответ

Майк Фарахyq— это мой -инструмент для манипулирования YAML. Например, используя файл определения пространства имен Kubernetes:

  • извлечь имя пространства имен:

    yq read deploy/namespace.yaml metadata.name
    
  • добавить метку:

    yq write deploy/namespace.yaml metadata.labels.name demo
    

    (это заменит существующий узел,или добавьте новый, если его еще нет)

Опцию -iможно использовать для обновления файлов в месте -.

Вы не найдете всего того, что инструменты XSLT обычно могут делать (илиjqдля JSON ), например, вы не найдете тестов для вложенных -выражений, поэтому вы не сможете (AFAIK )пишет эквивалент «обновить этот дополнительный узел -на узлах, у которых есть этот другой дополнительный узел -с этим значением».

7
27.01.2020, 23:14

Теги

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