簡體   English   中英

如何在Ansible的lineinfile模塊中的正則表達式中轉義一個或多個空格?

[英]How to escape 1 or more whitespaces in a regex in the lineinfile module of Ansible?

我正在使用Ansible使用lineinfile模塊在文件上設置一些變量。 我遇到的問題是如何使一個足夠靈活的正則表達式在字符串的中間有一些空格。 請看下面:

- name: Set DB IP in db conn file
  lineinfile: 
    dest=/path/to/db_conn
    regexp="{{ item.regexp }}"
    line="{{ item.line }}"
  with_items:
    - { regexp: "^.?dbschema_audit=",
        line: "$dbschema_audit=\'{{ db_schema_audit }}\';" }
    - { regexp: "^.?dbschema_audit_trail\s\*=",
        line: "$dbschema_audit_trail=\'{{ db_schema_audit_trail }}\';" }

我正在嘗試更改的文件包含以下行:

$dbschema_audit='a';
$dbschema_audit_trail ='a';

我嘗試了{'\\不同變體\\s* ,似乎沒有任何效果。 我可以從那里獲得一些智慧嗎?

Ansible劇本采用YAML格式。 在雙引號標量中,以\\字符開頭的字符序列是轉義序列,但YAML規范\\s不是有效的轉義序列。

在雙引號標量中,你必須寫

"\\s"

或者,在單引號標量中, \\字符沒有特殊含義,因此您可以編寫

'\s'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM