lineinfile模块
lineinfile模块功能
我们可以借助lineinfile模块,确保"某一行文本"存在于指定的文件中,或者确保从文件中删除指定的"文本" (即确保指定的文本不存在于文件中) ,还可以根据正则表达式,替换"某一行文本"。
lineinfile模块参数
path参数:必须参数,指定要操作的文件。
line参数:使用此参数指定文本内容。
regexp参数:使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
state参数:当想要删除对应的文本时,需要将state参数的值设置为absent, absent为缺席之意,表示删除,state的状认值为present
insertafter参数:借助insertafter参数可以将文本插入到指定的行之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF。如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾
insertbefore参数:借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行, 则插入到文件末尾
backup参数:是否在修改文件之前对文件进行备份。
create参数:当要操作的文件并不存在时,是否创建对应的文件。
模块应用:
在末尾添加文本:
[root@server1 testdir]# ansible testB -m lineinfile -a "name=/testdir/test line='test test'"
正则表达式替换:
例如替换wcc开头的,则替换最后一个wcc开头的
[root@server1 testdir]# ansible testB -m lineinfile -a "name=/testdir/test regexp="^wcc" line='test33'"
删除:(利用正则表达式)
[root@server1 testdir]# ansible testB -m lineinfile -a "name=/testdir/test regexp="^test" state=absent"
注意利用正则表达式替换的时候只改一个,删除的时候均会删除。