查找Regexp并替换以$开头的CSV文件的表达式

时间:2016-09-27 07:39:05

标签: python ansible ansible-playbook ansible-2.x

我需要一个Regexp和Replace表达式来捕获CSV文件中的内容。我的CSV文件就是这样开始的。

示例 - 表达式应在我的CSV文件中找到键名“FC_host”,并替换为不同的值。

$TH_appName=tuipatthcrfh3320
#$TH_host=10.145.129.75
$TH_host=10.145.129.75
$TH_casPort=8500;
$TH_eacPort=8888;
$FC_appName=tuipatfc3320;
#$FC_host=10.145.129.75
$FC_host=10.145.129.75
$FC_casPort=8500;
$FC_eacPort=8888;

以下是我的代码。这段代码有效但几乎没有问题。请帮我解决这个问题。此外,我正在使用regexp并进行替换,以便我需要在远程服务器上更新它们。

    ---
  - hosts: local
    vars:
      properties:
      - { name: "TH_appName", value: "10.0.1" }
    tasks:
      - name: Find and Replace
        replace:
          dest: /etc/ansible/kalyan-tui/example.csv
          regexp: '(.*){{ item.name }}=(.*);'
          replace: '\1{{ item.name }}={{ item.value }};'
         # state: present
        with_items:
          - "{{ properties }}"

2 个答案:

答案 0 :(得分:0)

with open('items.csv', 'r')as file:
for row in file:
    print row.replace('TH_host', 'Something else')

>>$TH_appName=tuipatthcrfh3320
>>#$Something else=10.145.129.75
>>$Something else=10.145.129.75
>>...

除非您需要使用正则表达式,例如多个数字或一定数量的空格,否则您不需要正则表达式。正则表达式非常昂贵,因此如果可能,应该avoided

答案 1 :(得分:0)

任务应如下所示:

- name: Find and Replace
  replace:
    dest: /etc/ansible/kalyan-tui/example.csv
    regexp: ^\$FC_host=.*
    replace: "$FC_host={{ new_value }}"
  • state不是replace
  • 的参数
  • 变量名称不能包含空格
  • 您不需要引用regexp
  • 您不需要在替换值中取消美元符号