Выделите символы из выходных данных ansible

#ansible #stdout

Вопрос:

Есть ли способ удалить код linux «[32 м АКТИВНЫЙ» [0 м «» из выходных строк и оставаться АКТИВНЫМ или ОТКЛЮЧЕННЫМ?

 ok: [server-c] => {
    "msg": [
        "Certificates 1"                                     u001b[32mACTIVEu001b[0m", 
        "Certificates 2"                                     u001b[32mACTIVEu001b[0m", 
        "Certificates 3"                                     u001b[32mACTIVEu001b[0m", 
        "Certificates 4"                                     u001b[93mDISABLEDu001b[0m", 
        "Certificates 5"                                     u001b[93mDISABLEDu001b[0m", 

    ]
}
 

Я попытался с помощью своего ансибельного кода, но ничего не убрал :

 ---
- hosts: server
  become: yes
  become_user: user
  tasks:
   - name: Show certificates   
     shell: '/bin/bash -i -c "kb | grep -i  certificates"' 
     register: results 
   - debug: msg="{{ results.stdout_lines | replace('\u001b[32m', '') | replace('\u001b[93m', '') | replace('\u001b[0m', '') }}"
 

Комментарии:

1. Попробуй replace('\u001b.*0m', '')

Ответ №1:

Например

     - debug:
        msg: "{{ item|regex_replace('\u001b.*0m', '')|trim }}"
      loop: "{{ results.stdout_lines }}"
 

дает

   msg: Certificates 1"
  msg: Certificates 2"
  msg: Certificates 3"
  msg: Certificates 4"
  msg: Certificates 5"
 

Если вы хотите удалить часть строки после цитаты

     - debug:
        msg: "{{ item|regex_replace(_regex, '') }}"
      loop: "{{ results.stdout_lines }}"
      vars:
        _regex: '".*0m'
 

дает

   msg: Certificates 1
  msg: Certificates 2
  msg: Certificates 3
  msg: Certificates 4
  msg: Certificates 5