# Output multi-line string as-is (not JSON format)

**URL:** <https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207>\
**Category:** Ansible Project\
**Created:** [September 13, 2014, 12:55am UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207 "2014-09-13T00:55:43Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![AJ\_Daws](https://avatars.discourse-cdn.com/v4/letter/a/73ab20/32.png) [@AJ\_Daws](https://forum.ansible.com/u/AJ_Daws)\
**Post date:** [September 13, 2014, 12:55am UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/1 "2014-09-13T00:55:43Z")

</div>

I have a large, multi-line string that I would like to output in a role. Currently I’m using the debug module like this:

`

- name: Cloud-init user\_data  
debug:  
msg: “{{ cloudinit\_user\_data|indent(6) }}”

`

However this generates JSON output which is quite hard to read as newlines are represented as “\n” rather than an actual new line. Is there a simple way to simply output a string as-is?

---

<div class="post-metadata">

**Author:** ![James\_Cammarata](https://avatars.discourse-cdn.com/v4/letter/j/7c8e57/32.png) [@James\_Cammarata](https://forum.ansible.com/u/James_Cammarata)\
**Post date:** [September 15, 2014, 9:32pm UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/2 "2014-09-15T21:32:39Z")

</div>

Hi AJ,

Using “- debug: var=cloudinit\_user\_data” will show you the pretty-printed version of the var, without any escaped values, though you won’t be able to control the indentation of that data.

Thanks!

---

<div class="post-metadata">

**Author:** ![AJ\_Daws](https://avatars.discourse-cdn.com/v4/letter/a/73ab20/32.png) [@AJ\_Daws](https://forum.ansible.com/u/AJ_Daws)\
**Post date:** [September 15, 2014, 10:51pm UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/3 "2014-09-15T22:51:07Z")

</div>

Unfortunately that still shows escaped newline characters so isn’t any more readable. For example:

`TASK: [ec2-launcher-v2 | debug var=cloudinit_user_data] *********************** ok: [localhost] => { "cloudinit_user_data": "#cloud-config\nusers:\n - name: core\n ssh-authorized-keys:\n - ssh-rsa AAAA..."`

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [September 15, 2014, 10:58pm UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/4 "2014-09-15T22:58:09Z")

</div>

That’s because they are escaped newlines, versus real newlines, I’m suspecting.

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [September 15, 2014, 10:59pm UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/5 "2014-09-15T22:59:00Z")

</div>

Let me take that back - it’s because it’s JSON. It would not be valid JSON if it were not.

Sorry, this is what you’re pretty much going to have here, unless we teach debug to have an format=yaml option or something, which I’d be ok with.

But even then, YAML needs hints and might get it wrong.

---

<div class="post-metadata">

**Author:** ![AJ\_Daws](https://avatars.discourse-cdn.com/v4/letter/a/73ab20/32.png) [@AJ\_Daws](https://forum.ansible.com/u/AJ_Daws)\
**Post date:** [September 15, 2014, 11:08pm UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/6 "2014-09-15T23:08:08Z")

</div>

To simplify out the fact that my multi-line string was YAML, how about this example:

Example string:

`

multi\_line\_string: |  
Lorem ipsum dolor sit amet,  
consectetur adipiscing elit,  
sed do eiusmod tempor incididunt  
ut labore et dolore magna aliqua. Ut enim  
ad minim veniam, quis nostrud exercitation  
ullamco laboris nisi ut aliquip ex ea commodo  
consequat.  
Duis aute irure dolor in reprehenderit in  
voluptate velit esse cillum dolore eu fugiat nulla  
pariatur. Excepteur sint occaecat cupidatat non proident,  
sunt in culpa qui officia deserunt mollit anim id est laborum.

`

Task:

`

- name: Cloud-init user\_data  
debug: var=multi\_line\_string

`

Output:

`

ok: [localhost] =\> {  
“multi\_line\_string”: “Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore magna aliqua. Ut enim\nad minim veniam, quis nostrud exercitation\nullamco laboris nisi ut aliquip ex ea commodo\nconsequat.\nDuis aute irure dolor in reprehenderit in\nvoluptate velit esse cillum dolore eu fugiat nulla\npariatur. Excepteur sint occaecat cupidatat non proident,\nsunt in culpa qui officia deserunt mollit anim id est laborum.\n”  
}

`

---

<div class="post-metadata">

**Author:** ![Toshio\_Kuratomi](https://avatars.discourse-cdn.com/v4/letter/t/41988e/32.png) [@Toshio\_Kuratomi](https://forum.ansible.com/u/Toshio_Kuratomi)\
**Post date:** [September 15, 2014, 11:59pm UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/7 "2014-09-15T23:59:42Z")

</div>

If all you want is to get your debug to print something somewhat human readable, perhaps this will work:

Task:

- name: Cloud-init user\_data

debug: var=multi\_line\_string.split(‘\n’)

-Toshio

---

<div class="post-metadata">

**Author:** ![AJ\_Daws](https://avatars.discourse-cdn.com/v4/letter/a/73ab20/32.png) [@AJ\_Daws](https://forum.ansible.com/u/AJ_Daws)\
**Post date:** [September 16, 2014, 12:27am UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/8 "2014-09-16T00:27:27Z")

</div>

Well, it’s a bit hacky but it gives the best result so far, and that’ll do. Thanks!

`

ok: [localhost] =\> {  
“multi\_line\_string.split(‘\n’)”: [  
“Lorem ipsum dolor sit amet,”,  
“consectetur adipiscing elit,”,  
“sed do eiusmod tempor incididunt”,  
“ut labore et dolore magna aliqua. Ut enim”,  
“ad minim veniam, quis nostrud exercitation”,  
“ullamco laboris nisi ut aliquip ex ea commodo”,  
“consequat.”,  
“Duis aute irure dolor in reprehenderit in”,  
“voluptate velit esse cillum dolore eu fugiat nulla”,  
“pariatur. Excepteur sint occaecat cupidatat non proident,”,  
“sunt in culpa qui officia deserunt mollit anim id est laborum.”,  
“”  
]  
}

`

`

ok: [localhost] =\> {  
“cloudinit\_user\_data.split(‘\n’)”: [  
“#cloud-config”,  
“users:”,  
" - name: core",  
" ssh-authorized-keys:",  
" - ssh-rsa …

`

---

<div class="post-metadata">

**Author:** ![Anatoli\_Barski](https://avatars.discourse-cdn.com/v4/letter/a/35a633/32.png) [@Anatoli\_Barski](https://forum.ansible.com/u/Anatoli_Barski)\
**Post date:** [April 20, 2018, 11:41am UTC](https://forum.ansible.com/t/output-multi-line-string-as-is-not-json-format/16207/9 "2018-04-20T11:41:02Z")

</div>

All those quotes are ugly… Would love to have something a debug module option for this.
