我需要一个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 }}"
答案 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
值