如何在ansible中将Windows风格的CR/LF行结尾替换为Linux风格的结尾?

use*_*612 4 linux sed ansible

我在我的任务中尝试过这个,但似乎不起作用

- name: Fix line endings from CRLF to LF
  local_action: replace dest={{my_dir}}/conf/{{item}} regexp='\r\n' replace='\n'
Run Code Online (Sandbox Code Playgroud)

我通常使用 sed 执行此操作,如下所示,它有效

sed -i 's/\r//g' file
Run Code Online (Sandbox Code Playgroud)

我想避免使用 shell 模块来进行此替换,因为它会在 ansible 中引发警告

Chr*_*him 5

您可以使用该命令删除 CRLF 行结尾-replace。您的剧本可能如下所示:

---
- hosts: all
  tasks:
    - local_action: replace dest={{my_dir}}/conf/{{item}} regexp="\r"
Run Code Online (Sandbox Code Playgroud)

replace如果在命令中不指定参数- replace,它只会删除所有回车符。请参阅http://docs.ansible.com/ansible/replace_module.html

我用我创建的本地文件对此进行了测试,并且在本地主机上测试时它有效。/etc/ansible/hosts当我将 localhost 添加到文件并使用以下剧本时,它也有效:

---
- hosts: all
  tasks:
    - replace: dest={{my_dir}}/conf/{{item}} regexp="\r"
Run Code Online (Sandbox Code Playgroud)

请务必使用绝对文件路径。