使用正则表达式将ansible剧本中的段落与大文本分开

时间:2018-07-24 10:45:13

标签: regex ansible

我有以下内容。

****************
* 192.168.1.1
****************
mount | grep 'on /mnt/'
/dev/drbd1 on /mnt/export/SDL-upload-A type ext4 (rw)
/dev/drbd2 on /mnt/export/SDL-upload-B type ext4 (rw)
/devmapper/NIB_VG1-LV_ems_data on /mnt/export/ems_data type xfs 
[root ems_data]#
****************
* 192.168.1.4
****************
mount | grep 'on /mnt/'
nib-vip:/mnt/export/ems_data on /mnt/import/ems_data type nfs 
nib-vip:/mnt/export/SDL on /mnt/import/SDL type nfs 
[root ems_data]#

我要按如下所示分隔文本:

第1部分:

****************
* 192.168.1.1
****************
mount | grep 'on /mnt/'
/dev/drbd1 on /mnt/export/SDL-upload-A type ext4 (rw)
/dev/drbd2 on /mnt/export/SDL-upload-B type ext4 (rw)
/devmapper/NIB_VG1-LV_ems_data on /mnt/export/ems_data type xfs 
[root ems_data]#

第2部分:

****************
* 192.168.1.4
****************
mount | grep 'on /mnt/'
nib-vip:/mnt/export/ems_data on /mnt/import/ems_data type nfs 
nib-vip:/mnt/export/SDL on /mnt/import/SDL type nfs 
[root ems_data]#

使用正则表达式并将其放在ansible剧本中的变量中。如果有人给我任何提示,这将非常有帮助。我尝试过(?<=192.168.1.1)(*)(?=\#),但它不起作用。

我的程序: 1.我正在全文中注册 2.然后使用filter和正则表达式尝试将其分开。

- name: read mount log
shell:  cat /var/tmp/diskmount.log
register: result_mount
- set_fact
   paragraph:"{{ result_mount.stdout | regex_search(regex) }}"

预先感谢

1 个答案:

答案 0 :(得分:0)

您是否有理由尝试这样做?我不确定regex是否适合这里。这样的事情怎么样?

shell: sed -n '/192.168.1.1/,/192.168.1.4/p' text.txt