使用正则表达式匹配方括号内的特定单词

时间:2019-07-05 11:01:53

标签: regex ansible

我有一个文件/ home / ec2-user / hosts,其中有一个名为[sample_word_test]的组,带有方括号,我想使用ansible剧本在该组下添加一个IP地址。我想使用lineinfile正则表达式来匹配[sample_word_test],并在该匹配组下添加IP地址

以下是我的剧本代码

lineinfile:
    path: /home/ec2-user/hosts
    regexp: "\[.*?sample_word_test.*$\]"
    line: "{{ new_server_ip }}"
    backup: yes

2 个答案:

答案 0 :(得分:1)

要完全匹配,您应该使用

@Data

您需要转义方括号,因为方括号用于在正则表达式语法中定义字符集。

  • ^\[sample_word_test\]$ -匹配字符串的开头
  • ^-转义字符,与左括号匹配
  • \[-转义字符,与右括号匹配
  • \]-匹配字符串的结尾

答案 1 :(得分:1)

非常简单的解决方案是使用ini_file。以下任务完成了所要求的工作。

- ini_file:
    path: /home/ec2-user/hosts
    section: sample_word_test
    option: "{{ new_server_ip }}"
    allow_no_value: yes
    backup: yes

例如

$ cat hosts
[all]
test1
test2

[sample_word_test]
192.168.1.99