gpt4 book ai didi

ansible - 如何替换ansible中的特殊字符

转载 作者:行者123 更新时间:2023-12-05 02:12:30 24 4
gpt4 key购买 nike

我想问一下,如何替换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 是一个数组,而不是一个字符串;并且您看到的输出可能与通过替换过滤器的输出不同。

要解决这个问题,您应该强制通过替换发送的内容为字符串。尽管第二个只对第一个元素进行操作,但其中任何一个都应该这样做。

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

您还可以使用 map 过滤器,如下所示:https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html用替换。

如果您只想获得没有特定文本的输出,我建议使用第一种形式。如果您要经常重用此模式,我建议您使用 map+regex_replace。

关于ansible - 如何替换ansible中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com