{"id":165,"date":"2023-08-31T10:30:18","date_gmt":"2023-08-31T08:30:18","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=165"},"modified":"2025-04-25T10:57:41","modified_gmt":"2025-04-25T08:57:41","slug":"1-9-acceder-al-contenido-de-los-ficheros","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/1-9-acceder-al-contenido-de-los-ficheros\/","title":{"rendered":"1.9.1. Introducci\u00f3n"},"content":{"rendered":"<p>Un filtro, en el contexto de la l\u00ednea de comandos de Gnu\/Linux, es un programa que acepta datos textuales y los transforma de una manera particular. Los filtros son una forma de tomar datos en bruto, ya sea producidos por otro programa o almacenados en un archivo, y manipularlos para que se muestren de una manera m\u00e1s adecuada para encontrar lo que estamos buscando. Estos filtros a menudo tienen varias opciones de l\u00ednea de comando que modificar\u00e1n su comportamiento, por lo que siempre es bueno consultar la p\u00e1gina del manual de un filtro para ver lo que est\u00e1 disponible.<\/p>\n<p>En los ejemplos que se muestran a continuaci\u00f3n, proporcionaremos entrada a estos comandos mediante un archivo, pero tambi\u00e9n veremos que podemos proporcionar entrada a trav\u00e9s de otros medios que agregan mucha m\u00e1s potencia (tabla 6). Adem\u00e1s, recuerda que el archivo se especifica como un <em>path<\/em> y, por lo tanto, puedes usar <em>paths<\/em> absolutos y relativos, y tambi\u00e9n comodines. Por otra parte, estas herramientas que estamos viendo solo sirven para trabajar con ficheros de texto, no binarios.<\/p>\n<div class=\"tabletitle\"><p>Tabla 6. Comandos para acceder al fichero.<\/p>\n<\/div>\n<table>\n<tbody>\n<tr class=\"table-header\">\n<td><strong>Comando<\/strong><\/td>\n<td><strong>Descripci\u00f3n<\/strong><\/td>\n<\/tr>\n<tr>\n<td><code>cat<\/code><\/td>\n<td>Imprime un fichero en el terminal<\/td>\n<\/tr>\n<tr>\n<td><code>more<\/code><\/td>\n<td>Muestra el resultado de la ejecuci\u00f3n de un comando en el terminal de una p\u00e1gina a la vez<\/td>\n<\/tr>\n<tr>\n<td><code>head<\/code><\/td>\n<td>Es un comando que imprime las primeras diez l\u00edneas de su entrada, pero podemos modificar esto con un argumento de l\u00ednea de comando<\/td>\n<\/tr>\n<tr>\n<td><code>tail<\/code><\/td>\n<td>Es un comando que imprime las \u00faltimas diez l\u00edneas de su entrada, pero podemos modificar esto con un argumento de l\u00ednea de comando<\/td>\n<\/tr>\n<tr>\n<td><code>less<\/code><\/td>\n<td>Es un visor de ficheros de texto, con este comando no podremos editar el fichero, pero s\u00ed navegar por su contenido<\/td>\n<\/tr>\n<tr>\n<td><code>nl<\/code><\/td>\n<td><em><code>number line<\/code><\/em> significa \u2018numerar l\u00edneas\u2019, y eso es exactamente lo que hace<\/td>\n<\/tr>\n<tr>\n<td><code>wc<\/code><\/td>\n<td><em><code>word count<\/code><\/em> significa \u2018contar palabras\u2019 y hace precisamente eso (as\u00ed como tambi\u00e9n cuenta caracteres y l\u00edneas). De forma predeterminada, dar\u00e1 un recuento de los tres, pero usando opciones de l\u00ednea de comando podemos limitarlo a lo que necesitemos<\/td>\n<\/tr>\n<tr>\n<td><code>diff<\/code><\/td>\n<td>Compara l\u00ednea a l\u00ednea dos ficheros de texto<\/td>\n<\/tr>\n<tr>\n<td><code>paste<\/code><\/td>\n<td>Une ficheros tabulares l\u00ednea por l\u00ednea<\/td>\n<\/tr>\n<tr>\n<td><code>od<\/code><\/td>\n<td><em><code>octal dump<\/code><\/em> convierte la entrada en m\u00faltiples formatos, con formato octal por defecto, y ayuda a comprender los datos complejos que no son legibles para los humanos<\/td>\n<\/tr>\n<tr>\n<td><code>sed<\/code><\/td>\n<td><em><code>stream editor<\/code><\/em><code> Editor<\/code> de flujo. Nos permite hacer una b\u00fasqueda y reemplazo, entre otras acciones, en nuestros datos<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Fuente: elaboraci\u00f3n propia.<\/p>\n<\/div>\n<p>En el campo de la bioinform\u00e1tica los archivos son muy grandes; incluso los editores en l\u00ednea pueden tener problemas para abrirlos. Existen otras formas de acceder a los contenidos del fichero. Uno de ellos ser\u00eda imprimir el fichero en el terminal utilizando el comando\u00a0<code>cat<\/code>.<\/p>\n<div class=\"featured featured-blue\"><p>Recuerda que con\u00a0Crtl + C\u00a0los programas se terminan inmediatamente y se vuelve a mostrar el\u00a0<em>prom<\/em>pt (en castellano, la l\u00ednea de comandos).<\/p>\n<\/div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$cat hg38_RefSeq.txt<\/pre>\n<p><code>cat<\/code>\u00a0es, adem\u00e1s, capaz de concatenar textos uno detr\u00e1s de otro en el orden en que se los pasamos, y de mostrarlos en pantalla.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ cat file1 file2 file3<\/pre>\n<p>O se puede generar un nuevo fichero.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ cat seq1 seq2 &gt;&gt; set1-2.txt<\/pre>\n<p>Algunas opciones interesantes de\u00a0<code>cat<\/code>\u00a0son:<\/p>\n<ul>\n<li><code>-A<\/code>: muestra tambi\u00e9n los caracteres de control, b\u00e1sicamente los tabuladores (como <code>^I<\/code>) y los retornos de carro (<code>$<\/code>).<\/li>\n<li><code>-n<\/code>: numera todas las l\u00edneas.<\/li>\n<\/ul>\n<p>Para obtener una visi\u00f3n general del contenido del archivo sin ocupar todo el terminal, se pueden imprimir solo las primeras l\u00edneas usando el comando <code>head<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ head -3 hg38_RefSeq.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">#bin name chrom strand\u00a0\u00a0\u00a0 txStart\u00a0\u00a0\u00a0 txEnd cdsStart\u00a0\u00a0 cdsEnd\u00a0\u00a0\u00a0 exonCount exonStarts exonEnds\u00a0\u00a0 score name2\u00a0\u00a0\u00a0\u00a0 cdsStartStat\u00a0\u00a0\u00a0 cdsEndStat exonFrames<\/pre>\n<p>0\u00a0\u00a0\u00a0 NM_001276352.2\u00a0 chr1 &#8211;\u00a0\u00a0\u00a0 67092164\u00a0\u00a0 67134970\u00a0\u00a0 67093579 67127240\u00a0\u00a0\u00a0 9 \u00a0\u00a0\u00a0\u00a0 67092164,67096251,67103237,67111576,67115351,67125751,67127165,67131141,67134929,\u00a0\u00a0\u00a0\u00a0 67093604,67096321,67103382,67111644,67115464,67125909,67127257,67131227,67134970,<\/p>\n<p>0\u00a0\u00a0\u00a0 C1orf141\u00a0\u00a0 cmpl cmpl 2,1,0,1,2,0,0,-1,-1, 0\u00a0\u00a0\u00a0\u00a0 NM_001276351.2\u00a0 chr1 &#8211;\u00a0\u00a0\u00a0 67092164\u00a0\u00a0 67134970\u00a0\u00a0\u00a0\u00a0 67093004\u00a0\u00a0 67127240\u00a0\u00a0 8\u00a0\u00a0\u00a0 67092164,67095234,67096251,67115351,67125751,67127165,67131141,67134929,\u00a0\u00a0\u00a0\u00a0 67093604,67095421,67096321,67115464,67125909,67127257,67131227,67134970,\u00a0\u00a0 0\u00a0\u00a0\u00a0 C1orf141\u00a0\u00a0 cmpl cmpl\u00a0\u00a0\u00a0\u00a0 0,2,1,2,0,0,-1,-1,<\/p>\n<p>Existe el comando <code>tail<\/code>, y permite imprimir el final de los archivos.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ tail -2 hg38_RefSeq.txt<\/pre>\n<p>Otro comportamiento de\u00a0<code>tail<\/code> que resulta \u00fatil es que puede mostrar todas las l\u00edneas, excepto las\u00a0<em><code>k<\/code><\/em>\u00a0primeras l\u00edneas. Para ello hay que usar la opci\u00f3n\u00a0<code>-n<\/code>\u00a0y el n\u00famero de l\u00edneas que queremos omitir precedido por un\u00a0<code>+<\/code>. Si se quiere omitir las primeras veintid\u00f3s l\u00edneas podemos escribir:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ tail -n +22 hg38_RefSeq.txt<\/pre>\n<p>Cuando se necesita examinar un archivo de texto para familiarizarse con su contenido, es com\u00fan abrirlo y navegar a trav\u00e9s de \u00e9l. Sin embargo, si el archivo es muy grande, puede haber problemas al intentar abrirlo con un editor de texto.<\/p>\n<p>En estos casos, una herramienta \u00fatil es <code>less<\/code>, un visor de archivos de texto que puede manejar archivos inmensos sin problemas. Aunque <code>less<\/code> no permite la edici\u00f3n del archivo, s\u00ed nos permite navegar por su contenido de manera interactiva. Al ejecutar <em>less<\/em>, el programa se abrir\u00e1 en el terminal y har\u00e1 que el <em>prompt<\/em> desaparezca temporalmente. Podremos salir del programa en cualquier momento presionando la tecla <em>q<\/em>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ less hg38_RefSeq.txt<\/pre>\n<p>Dentro de\u00a0<code>less<\/code>\u00a0disponemos de varios comandos para movernos por el fichero:<\/p>\n<ul>\n<li>Barra de espacio: p\u00e1gina siguiente.<\/li>\n<li>b: p\u00e1gina anterior.<\/li>\n<li>100g: va a la l\u00ednea 100 (o a la que le indiquemos).<\/li>\n<li>-S: corta o no corta las l\u00edneas largas.<\/li>\n<li>\/palabra: busca la cadena de texto que le indiquemos (acepta expresiones regulares).<\/li>\n<li>n: va a la siguiente palabra que coincide con la b\u00fasqueda.<\/li>\n<li>N: va la palabra anterior que coincide con la b\u00fasqueda.<\/li>\n<li>q: sale del fichero.<\/li>\n<li>h: ayuda.<\/li>\n<\/ul>\n<p>El comando <code>wc<\/code> significa conteo de palabras, y eso es lo que hace (as\u00ed como contar caracteres y l\u00edneas). Por defecto, nos dar\u00e1 un recuento de las tres posibilidades, pero usando opciones de l\u00ednea de comando, se puede limitar lo que se busca. A veces solo queremos uno de estos valores. Por ejemplo, \u00ab<code>-l<\/code>\u00bb nos dar\u00e1 solo las l\u00edneas, \u00ab<code>-w<\/code>\u00bb nos dar\u00e1 las palabras y \u00ab<code>-m<\/code>\u00bb nos dar\u00e1 los caracteres.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ wc hg38_RefSeq.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">172767\u00a0 2764272 56256545 hg38_RefSeq.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ wc -l hg38_RefSeq.txt\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">172767 hg38_RefSeq.txt<\/pre>\n<p>La segunda orden imprime por pantalla solo un recuento de l\u00edneas, pero la primera orden nos informa del n\u00famero de l\u00edneas, palabras y caracteres que tiene el fichero.<\/p>\n<p>El comando <code>diff<\/code> permite llevar a cabo la comparaci\u00f3n l\u00ednea a l\u00ednea de dos ficheros de texto. Obviamente, hay formas m\u00e1s sofisticadas de comparar archivos. Sin embargo, esta funci\u00f3n es extremadamente \u00fatil para confirmar cuando dos ficheros no son id\u00e9nticos (una de las operaciones m\u00e1s comunes en bioinform\u00e1tica).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ diff file1.txt file2.txt<\/pre>\n<p>Por \u00faltimo, se comenta el comando <code>paste<\/code>. Supongamos que tenemos dos ficheros, uno con datos sobre la progresi\u00f3n de la enfermedad de una serie de enfermos y otro con el genotipado de los mismos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ cat pacientes.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">id_paciente,nivel_glucosa<\/pre>\n<p>1,190<\/p>\n<p>2,250<\/p>\n<p>3,220<\/p>\n<p>4,260<\/p>\n<p>5,160<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ cat genotipado.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">id_paciente,SNP_a,SNP_b\r\n1,AA,CC\r\n2,AC,GG\r\n3,AA,CG\r\n4,AT,GG\r\n5,AA,CC<\/pre>\n<p>Se pueden fusionar los dos archivos usando el comando <code>paste<\/code> l\u00ednea a l\u00ednea:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ paste -d',' pacientes.txt genotipado.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">id_paciente,nivel_colesterol,id_paciente,SNP_a,SNP_b<\/pre>\n<p>1,190,1,AA,CC<\/p>\n<p>2,250,2,AC,GG<\/p>\n<p>3,220,3,AA,CG<\/p>\n<p>4,260,4,AT,GG<\/p>\n<p>5,160,5,AA,CC<\/p>\n<p>La cantidad de informaci\u00f3n almacenada en cualquier entorno bioinform\u00e1tico es considerable, y a menudo ocupa varios terabytes. Por ejemplo, la secuencia del genoma humano est\u00e1 compuesta por alrededor de tres mil millones de nucle\u00f3tidos, lo que se traduce en aproximadamente tres gigabytes. Esto implica que a menudo es necesario comprimir directorios enteros, la instrucci\u00f3n <code>tar<\/code> puede crear un paquete \u00fanico a partir del directorio, que posteriormente puede ser comprimido con <code>gzip<\/code>. La tabla 7 describe los comandos para comprimir\/descomprimir m\u00e1s habituales:<\/p>\n<div class=\"tabletitle\"><p>Tabla 7. Comandos para acceder a los ficheros.<\/p>\n<\/div>\n<table>\n<tbody>\n<tr class=\"table-header\">\n<td><strong>Comando<\/strong><\/td>\n<td><strong>Descripci\u00f3n<\/strong><\/td>\n<\/tr>\n<tr>\n<td><code>tar<\/code><\/td>\n<td>Empaquetar m\u00faltiples archivos y directorios<\/td>\n<\/tr>\n<tr>\n<td><code>gzip<\/code><\/td>\n<td>Comprimir y descomprimir archivos<\/td>\n<\/tr>\n<tr>\n<td><code>zmore<\/code><\/td>\n<td>Descomprimir y visualizar un archivo<\/td>\n<\/tr>\n<tr>\n<td><code>zcat<\/code><\/td>\n<td>Descomprimir y volcar un archivo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Fuente: elaboraci\u00f3n propia.<\/p>\n<\/div>\n<div class=\"featured featured-grey\"><p>Un ejemplo con <code>tar<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ tar -cvf backup.tar<\/pre>\n<p>\n<\/div>\n<p>En el ejemplo anterior de <code>tar<\/code>, las opciones indican que se crea (<em>c<\/em>) un archivo (<em>f<\/em>) llamado <em>backup.tar<\/em> que incluye todos los contenidos del directorio \/home\/student y sus subdirectorios, y que se muestren mensajes detallados mientras se crea la copia de seguridad (<em>v<\/em>). Debido a que backup.tar es un argumento de la opci\u00f3n <em>f<\/em>, backup.tar debe seguir inmediatamente a la opci\u00f3n. Otras opciones son:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ tar -xvf backup.tar<\/pre>\n<p># La\u00a0nueva\u00a0opci\u00f3n\u00a0(x)\u00a0indica\u00a0que\u00a0se\u00a0desempaquete\u00a0el\u00a0fichero\u00a0backup.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ tar -czvf backup.tar.gz \/home\/student<\/pre>\n<p># La\u00a0opci\u00f3n\u00a0(z)\u00a0indica\u00a0que\u00a0despu\u00e9s\u00a0de\u00a0que\u00a0se\u00a0cree\u00a0el\u00a0fichero\u00a0se\u00a0comprima.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ tar -xzvf backup.tar.gz<\/pre>\n<p>Esta combinaci\u00f3n de opciones indica que el fichero se descomprima y se desempaquete.<\/p>\n<p>Los comandos <code>more<\/code> y <code>cat<\/code> poseen una versi\u00f3n especial que integra el comando <code>gzip<\/code> como un filtro adicional. Como resultado, podemos visualizar directamente en el terminal un fichero comprimido:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gzip NANOGgene.fa<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ zmore NANOGgene.fa.gz | head -5<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">&gt;hg19_refGene_NM_024865 range=chr12:7941992-7948657\r\nTTCATTATAAATCTAGAGACTCCAGGATTTTAACGTTCTGCTGGACTGAG\r\nCTGGTTGCCTCATGTTATTATGCAGGCAACTCACTTTATCCCAATTTCTT\r\nGATACTTTTCCTTCTGGAGGTCCTATTTCTCTAACATCTTCCAGAAAAGT\r\nCTTAAAGCTGCCTTAACCTTTTTTCCAGTCCACCTCTTAAATTTTTTCCT<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ zcat NANOGgene.fa.gz | tail -3<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GTTGGTTTAAGTTCAAATGAATGAAACAACTATTTTTCCTTTAGTTGATT\r\nTTACCCTGATTTCACCGAGTGTTTCAATGAGTAAATATACAGCTTAAACA\r\nTAA<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gzip -d NANOGgene.fa.gz<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un filtro, en el contexto de la l\u00ednea de comandos de Gnu\/Linux, es un programa que acepta datos textuales y los transforma de una manera particular. Los filtros son una forma de tomar datos en bruto, ya sea producidos por otro programa o almacenados en un archivo, y manipularlos para que se muestren de una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/165"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/comments?post=165"}],"version-history":[{"count":44,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/165\/revisions"}],"predecessor-version":[{"id":1357,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/165\/revisions\/1357"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/media?parent=165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}