Ansible Lineinfile2024 年 8 月 29 日 | 阅读 3 分钟 lineinfile 是 Ansible 工具箱中最强大的模块之一。 Ansible lineinfile 模块用于插入、修改、删除和替换现有行。 当您处理文件并在运行时修改其内容(例如,在文件中添加新行或更新,替换文件中找到特定文本的行等)时,Ansible lineinfile 模块可以节省您的时间。 Ansible lineinfile 提供了许多参数来快速完成这项工作。您还可以使用条件来匹配行,然后再使用正则表达式进行修改、删除。您可以使用反向引用参数重用和修改匹配的行。 注意:Ansible lineinfile 只能用于处理文件中的单行。 如果要替换多行,请替换该模块,如果要插入、更新、删除文件中的一组行,请使用 blockinfile 模块。插入一行让我们看看如何在不存在时向文件中写入一行。您可以使用 path(>Ansible 2.3)/ dest 参数设置要修改的文件的路径。并使用 line 参数设置要插入的行。 以下示例将把行 "Inserting a line in a file" 写入文件 "remote_server.txt"。新行将添加到 EOF。如果该行已经存在,则不会合并。 您还可以设置 create 参数,该参数表示如果文件不存在,则创建一个新文件。 state 的默认值为 present。 删除一行将 state 参数设置为 absent 或删除指定的行。 该行的所有出现将被删除。 替换或修改一行要修改一行,您需要将 Ansible backrefs 参数与 regexp 参数一起使用。 这应该与 state=present 一起使用。 如果 regexp 与任何行都不匹配,则文件不会更改。如果 regexp 匹配一行或多行,则将替换最后匹配的行。regexp 中的分组元素已填充,可用于修改。 在下面的示例中,我们注释掉了某一行。通过将完整行置于括号内来捕获它,以实现 '\1'。 '#\1' 将行替换为 '#' 后跟已捕获的内容。 您可以有多个捕获,并使用 '\1'、'\2'、'\3' 等来调用它们。 使用 Ansible lineinfile backrefs 注释掉一行 使用 lineinfile regexp 取消注释该行 下一主题Ansible Copy |
我们请求您订阅我们的新闻通讯以获取最新更新。