Использование sed для сопоставления динамической многострочной -строковой строки и добавления к ней

Не используйте parted, так как он явно не подходит для работы. Чтобы разбить GPT-диск, используйте gdisk. В качестве альтернативы, если ваша версия fdiskпонимает разделы GPT, вы также можете использовать ее. Просто удалите раздел и создайте новый раздел. Отформатируйте раздел с помощью mkfs.ext4. Обратите внимание, что это уничтожит все данные, которые вы уже записали на диск.

0
04.03.2021, 03:59
2 ответа

Я думаю, вы можете захватить пробелы из совпадающей строки, а затем заменить при вставке

sed 's/^\( *\)state: present$/&\n\1use: package_manager/' ansible.yaml

Выход:

# Example 1
- name: Package X Install
  package:
    name:
      - package_1
      - package_2
    state: present
    use: package_manager

# Example 2
- name: Package Y Install
  package:
    name: package_3
    state: present
    use: package_manager

# Example 3
- block:
  - name: Package Z Install
    package:
      name: package_4
      state: present
      use: package_manager

# etc. Further examples would be any combination, iteration of the above.
1
18.03.2021, 22:27

Использование надлежащего синтаксического анализатора YAML для данных в вопросе,

$ yq -y '(.. |.package? | select(.state == "present")) |= (.use = "package_manager")' file.yml
- name: Package X Install
  package:
    name:
      - package_1
      - package_2
    state: present
    use: package_manager
- name: Package Y Install
  package:
    name: package_3
    state: present
    use: package_manager
- block:
    - name: Package Z Install
      package:
        name: package_4
        state: present
        use: package_manager

При этом используется синтаксический анализатор yqдля добавления пары «ключ+значение» use: package_managerв каждую секцию package, содержащую ключ state, соответствующий значению present.

Он делает это путем рекурсии по всем данным, выбирая разделы package, которые имеют ключ stateсо значением present. Затем он добавляет новый ключ и значение в эти разделы.

0
30.04.2021, 18:40

Теги

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