2015-08-14 7 views
7

Używam [wyszukiwanie pliku], który odczytuje cały plik i przechowuje zawartość w zmiennej. Moja gra wygląda mniej więcej tak:Jak usunąć znak łamania linii ' n' z wyniku modułu lookup() w Ansible?

- name: Store foo.xml contents in a variable 
    set_fact: 
    foo_content: "{{ lookup('file', 'foo.xml') | replace('\n', '')}}" 

więc powyższy kod odczytuje plik bardzo dobrze i przechowuje go w zmiennej, ale problem jest, gdy ma podziałów wierszy w nim, że obejmuje również podział wiersza w zmiennej.

My jest ten plik:

<?xml version="1.0" encoding="utf-8"?> 
<initialize_param> 
    <secrets> 
     <my_secret id="99">3VMjII6Hw+pd1zHV5THSI712y421USUS8124487128745812sajfhsakjfasbfvcasvnjasjkvbhasdfasgfsfaj5G8A9+n8CkLxk7Dqu0G8Jclg0eb1A5xeFzR3rrJHrb2GBBa7PJNVx8tFJP3AtF6ek/F/WvlBIs2leX2fq+/bGryKlySuFmbcwBsThmPJC5Z5AwPJgGZx</my_secret> 
    </secrets> 
</initialize_param> 

Wyjście usuwa linia przerwania \ n ale również incudes zaczepy \ r & \ t

muszę pozbył się \n, trzeba uzyskać pozbędziesz się także dodatkowego formowania (\ r & \ t), ponadto po wymianie filtra otrzymuję komunikat o błędzie podczas uruchamiania zapytania o aktualizację bazy danych jako

stderr: /bin/sh: 1: cannot open ?xml: No such file 
+0

Domyślam się, że \ n jest tylko artefaktem debugowania i jest tam prawidłowo obsługiwane. –

+0

nie, to faktycznie przechowuje je jako \ n, a następnie, gdy wypycham zmienną w bazie danych, generuje błąd: –

+0

Czy możesz wyjaśnić, jakiego rodzaju błąd i jak naciskasz do bazy danych? –

Odpowiedz

11

Możesz to zrobić z replace filter?

contents: "{{ lookup('file', '/etc/foo.txt') | replace('\n', '')}}" 
+0

Tak, robi to .. ale co, jeśli plik txt zostanie zastąpiony przez .xml .. prawdopodobnie zmieni moje pytanie na –

+1

Jak możemy użyć wielokrotnego zamiany w wyszukiwaniu? Próbuję usunąć więcej charecterów takich jak \ r, więc oczekuję czegoś takiego: zawartość: "{{lookup ('file', '/etc/foo.txt') | replace ('\ n', '') | replace ('\ r', '')}} " –

+0

Twój przykład jest poprawny. Tak to zrobić. – udondan

8

pomocą Jinja trim filtr:

"{{ lookup('file', 'foo.xml') | trim }}" 
+0

Wow, zadziałało. Przysięgam, że pracowałem nad tym od wielu godzin. W łańcuchu JSON, który próbowałam opublikować na serwerze przy użyciu modułu uri_module, był ciąg \ n \ n \ n \ n \ n \ n \ n \ n \ n "". replace ('\ n', '') nie pozbywał się tego, myślałem, co do diabła, spróbuję tego, i to DZIAŁA. argh. Sądzę, że było z tym wiele poziomów problemów, ale dziękuję panu! –