Replace Ansible-替换“;和\r\n在变量中

Replace Ansible-替换“;和\r\n在变量中,replace,ansible,escaping,jinja2,double-quotes,Replace,Ansible,Escaping,Jinja2,Double Quotes,我想用Ansible替换变量内容中的“和\r\ 我在变量结果中有以下数据,我将上一个任务的输出注册到变量中 curl -s -H \"Authorization: JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ\r\" https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000 | jq -r '.results|.[]|.name' 在上面的内容中,我想用null替换\和\r\

我想用Ansible替换变量内容中的
\r\

我在变量
结果
中有以下数据,我将上一个任务的输出注册到变量中

curl -s -H \"Authorization: JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ\r\" https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000 | jq -r '.results|.[]|.name'
在上面的内容中,我想用null替换
\
\r\

我试过下面的方法,但对我不起作用

- set_fact: final_out="{{result | replace('\', "") | replace('\r\', '')}}"
预期产量为

curl -s -H "Authorization: JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ" https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000 | jq -r '.results|.[]|.name'
示例剧本片段对我很有帮助,因为我是ansible的新手。

逃离地狱

我无法使用
replace
,可能是因为我不够努力/聪明。同时,在您的特定情况下,您可以通过一个
regex\u replace
筛选器调用来实现预期的结果,因此它更容易(而且很快就成功了:)

我使用yaml折叠块(
)和空白控制(
-
)来最小化逃跑的麻烦。如果你不知道那是什么,请看一看yaml文档(这是我最喜欢的)

请注意,下面最后一个结果中的剩余反斜杠由ansible添加,以转义输出中的双引号

---
- name: Escape chars
  hosts: localhost
  gather_facts: false

  vars:
    test: >-
      curl -s -H \"Authorization: JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ\r\"
      https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000
      | jq -r '.results|.[]|.name'

  tasks:
    - name: Show the untouched var
      debug:
        var: test

    - name: Escape the var as intended
      debug:
        msg: >-
          {{ test | regex_replace('\\r?\\?', '') }}
导致

PLAY[逃逸角色]********************************************************************
任务[显示未触及的变量]**********************************************************
确定:[本地主机]=>{
“测试”:“curl-s-H\\\”授权:JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ\\r\\”https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000 |jq-r'.results |.[]|.name''
}
任务[按预期转义变量]******************************************************
确定:[本地主机]=>{
“msg”:“curl-s-H \”授权:JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ \”https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000 |jq-r'.results |.[]|.name''
}
重演*****************************************************************************
localhost:ok=2已更改=0无法访问=0失败=0
逃离地狱

我无法使用
replace
,可能是因为我不够努力/聪明。同时,在您的特定情况下,您可以通过一个
regex\u replace
筛选器调用来实现预期的结果,因此它更容易(而且很快就成功了:)

我使用yaml折叠块(
)和空白控制(
-
)来最小化逃跑的麻烦。如果你不知道那是什么,请看一看yaml文档(这是我最喜欢的)

请注意,下面最后一个结果中的剩余反斜杠由ansible添加,以转义输出中的双引号

---
- name: Escape chars
  hosts: localhost
  gather_facts: false

  vars:
    test: >-
      curl -s -H \"Authorization: JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ\r\"
      https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000
      | jq -r '.results|.[]|.name'

  tasks:
    - name: Show the untouched var
      debug:
        var: test

    - name: Escape the var as intended
      debug:
        msg: >-
          {{ test | regex_replace('\\r?\\?', '') }}
导致

PLAY[逃逸角色]********************************************************************
任务[显示未触及的变量]**********************************************************
确定:[本地主机]=>{
“测试”:“curl-s-H\\\”授权:JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ\\r\\”https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000 |jq-r'.results |.[]|.name''
}
任务[按预期转义变量]******************************************************
确定:[本地主机]=>{
“msg”:“curl-s-H \”授权:JWT eyJ4NWMiOlsiTUlJQytqQ0NBHuHO96csEQ \”https://hub.docker.com/v2/repositories/talasecurityinc/?page_size=10000 |jq-r'.results |.[]|.name''
}
重演*****************************************************************************
localhost:ok=2已更改=0无法访问=0失败=0

什么在生成
curl
命令行?什么在生成
curl
命令行?