基本上,我有一个包含接口信息的文本文件(即接口gigabit0 / 1/2,接口gigabit0 / 2/3)。我需要在每个接口命令之后添加一个额外的块。它必须如下所示:-
interface gigabit0/1/2
shutdown
!
interface gigabit0/2/3
shutdown
!
我使用了一个已经存在的“ lineinfile”模块来匹配正则表达式,并在匹配后添加新行。
---
- hosts: localhost
tasks:
- name: Ansible insert
lineinfile:
path: ./ha.txt
line: |
shutdown
!
insertafter: interface?\s[a-z]\w*/[0-9]/[0-9]
state: present
with_lines: cat ha.txt
答案 0 :(得分:0)
使用replace。下面的游戏
tasks:
- replace:
path: ha.txt
regexp: '(interface?\s[a-z]\w*/[0-9]/[0-9])'
replace: |-
\1
shutdown
!
与文件
> cat ha.txt
interface gigabit0/1/2
interface gigabit0/2/3
给予:
> cat ha.txt
interface gigabit0/1/2
shutdown
!
interface gigabit0/2/3
shutdown
!
答案 1 :(得分:0)
这里只是一点点挑剔:在弗拉基米尔(Vladimir)的原始版本和优秀版本中,正则表达式都可能在?
之后丢失interface
字符:
regexp: '(interface\s[a-z]\w*/[0-9]/[0-9])'
按原样的?
表示e
中的interface
字符是可选的,没有什么意义。