Удалить каждую строку перед строкой в ​​файле, используя Ansible - PullRequest
1 голос
/ 25 февраля 2020

У меня есть файл ниже:

Scheduled jobs
Locale LANG set to the following: "en"
CONMAN:AWSBHU611W Conman could not initialize the HTTP or HTTPS connection.
Workstation Job Stream SchedTime Job State Pr Start Elapse ReturnCode Dependencies

HCPRODNWA #NW_HC_CA_BKP1 0106 02/13 **************************************** HOLD 10(02/13) (03:22)
NW_HC_CA_PREBKUP1B HOLD 10(02/13)(00:01)
NW_HC_CA_SANREPLICATION HOLD 10(02/13)(00:05)ΩNW_HC_CA_PREBKUP1B
NW_HC_CA_PPBACKUP HOLD 10(02/13)(03:17)
NW_HC_CA_SANREPLICATION
NW_HC_CA_GOLDCOPY HOLD 10(02/13)(00:01)
NW_HC_CA_SANREPLICATION

Я хочу удалить все строки перед строкой, начинающейся с 'Job Work Job ...'

Мой ansible код:

- name: Extract job details
  replace:
    path: /tmp/tws_jobs
    after: '(^Scheduled)'
    before: '(^Workstation)'
    regexp: '^(.*)$'
    replace: ''

Но я не могу получить желаемый результат. Вместо этого я получаю следующее сообщение:

"msg": "Pattern for before/after params did not match the given file: (^Scheduled)(?P<subsection>.*?)(^Workstation)"

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Q: "Шаблон для параметров до / после не соответствует данному файлу ..."

A: Ни до ни после того, как шаблон соответствует любой строке в файле. Правильные шаблоны должны быть

    after: '^Scheduled(.*)$'
    before: '^Workstation(.*)$'

Но эти шаблоны также не работают, вероятно, из-за открытых проблем Заменить модуль до / после все еще неисправного # 47917 .

Это можно протестировать различные шаблоны в упрощенном примере

shell> cat test.txt
aaa
bbb
ccc
ddd
eee

Задача

   - replace:
        path: test.txt
        after: 'bbb'
        before: 'ddd'
        regexp: '^(.*)$'
        replace: ''

работает как положено

shell> cat test.txt
aaa
bbb

ddd
eee

Но ни

   - replace:
        path: test.txt
        after: '^bb'
        before: '^dd'
        regexp: '^(.*)$'
        replace: ''

или

   - replace:
        path: test.txt
        after: '^bb(.*)$'
        before: '^dd(.*)$'
        regexp: '^(.*)$'
        replace: ''

изменить что-либо в файле

PLAY RECAP *************************************************************************
localhost: ok=1  changed=0  unreachable=0  failed=0  skipped=0  rescued=0  ignored=0
0 голосов
/ 25 февраля 2020

Попробуйте другой подход: blockinfile :

- name: Extract job details
  blockinfile:
    marker_begin: '^Scheduled'
    marker_end: '^Workstation'
...