ANSIBLE:拆分函数未从字符串中删除 '\r' 回车 return

ANSIBLE: Split function not removing the '\r' carriage return from string

我有一个名为 file-names.txt 的本地 txt 文件,其中包含文件名列表

file1.txt
file2.txt
file3.txt

在我的 ansible-playbook 中,我正在使用 slurp 模块注册 file-name.txt 的文件内容。 并设置一个名为 files_names.

的事实
tasks:
 - name: Getting the file
   ansible.builtin.slurp:
    src: file-name.txt
   register: file_names
 - name: Saving the file names
   set_fact: 
     file_name_list: "{{ (file_name['content] | b64decode | trim ).split('\r\n') }}"

我希望 file_name_list 事实是一个仅包含文件名的列表。但是有些 split 函数无法从文件名中删除 '\r',我得到以下结果

ok: [localhost] => {
  "ansible_facts":{
     "file_name_list": [
       "file1.txt\r",
       "file2.txt\r",
       "file3.txt"       
      ]
  },
  "changed": false
}

如何从数组的每个元素中删除回车 return '\r' 以便 file_name_list 看起来像

ok: [localhost] => {
  "ansible_facts":{
     "file_name_list": [
       "file1.txt",
       "file2.txt",
       "file3.txt"       
      ]
  },
  "changed": false
}

PS: file-name.txt 是在 Windows 机器上制作的,这就是为什么每行中包含一个回车符 return。

所以 trim 过滤器似乎从 file3.txt 上的文件列表中删除了最后一个 \r。因此,我们可以在使用 \r.

拆分文件名后,而不是在拆分前使用 trim,每个 item trim

像下面这样的东西应该可以解决问题:

    - name: saving the file names
      set_fact:
        filename_list: "{{ filename_list|default([]) + [ item|trim ] }}"
      with_items: "{{ (filenames.content|b64decode).split('\r') }}"
    - name: show the filenames
      debug:
        var: filename_list

这应该产生:

ok: [localhost] => {
    "filename_list": [
        "file1.txt",
        "file2.txt",
        "file3.txt"
    ]
}


"{{ some_string| regex_replace('[\r\n]+','\n') }}"