簡體   English   中英

如何在Ansible中替換特殊字符

[英]How to replace special characters in ansible

我想問一下,如何在ansible中替換特殊字符。 當我用ansible輸出標准輸出時,我轉義了字符,我想從輸出中刪除它們。 例如

\e[0m

我嘗試了replace('\\\\e[0m', '') ,但是沒有用。我在做什么錯?

謝謝

更新:

    - name: Running the docker image 
      command: docker run "{{ image_name }}"
      register: result

    - debug:
        msg: "{{ result.stdout_lines  | replace('\\e[0m'', '')| replace('\\t', '') }}"
      when: result.stdout_lines is defined

但輸出仍然是:

"\e[1mTEST1 \e[0m\e[0;32m[OK]\e[0m"

sh生成顏色和格式:

BOLD='\033[1m'
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

因此,以某種方式\\033導致\\e

您有兩個主要問題:result.stdout_lines是一個數組,而不是字符串; 而且您看到的輸出可能與通過替換過濾器得到的輸出不同。

為了解決這個問題,您應該將通過replace發送的內容強制為字符串。 盡管第二個只對第一個元素起作用,但是這兩個都應該這樣做。

    msg: "{{ ''.join(result.stdout_lines)  | replace('\\e[0m', '')| replace('\\t', '') }}"
    msg: "{{ result.stdout_lines[0]  | replace('\\e[0m', '')| replace('\\t', '') }}"

您還可以使用地圖過濾器,如下所示: https : //docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html,帶有replace。

我建議使用第一種形式,如果您只想簡單地獲取沒有某些文本的輸出。 如果您要經常重用此模式,建議您弄清楚map + regex_replace。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM