{"id":723,"date":"2023-10-18T13:00:20","date_gmt":"2023-10-18T11:00:20","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=723"},"modified":"2025-02-10T21:31:18","modified_gmt":"2025-02-10T19:31:18","slug":"1-13-2-conceptes-fonamentals","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/1-13-2-conceptes-fonamentals\/","title":{"rendered":"1.13.2. Conceptes fonamentals"},"content":{"rendered":"<p>L\u2019ordre <code>gawk<\/code> \u00e9s una eina capa\u00e7 d\u2019executar un bloc de codi sobre atributs individuals de cada registre emmagatzemat en les l\u00ednies d\u2019un arxiu de text. En processar les dades, \u00e9s possible generar una nova l\u00ednia de resultats, que es pot mostrar per pantalla o guardar en un nou arxiu de text.<\/p>\n<p>L\u2019ordre <code>gawk<\/code> recorre el contingut de l\u2019arxiu de text l\u00ednia per l\u00ednia, separant autom\u00e0ticament els diferents components d\u2019aquestes. L\u2019usuari t\u00e9 acc\u00e9s a variables predefinides que proporcionen informaci\u00f3 selectiva (vegeu la taula 11) i pot accedir a cada columna d\u2019una l\u00ednia a trav\u00e9s de la seva posici\u00f3.<\/p>\n<div class=\"tabletitle\"><p>Taula 11. Variables especials d&#8217;\u00abawk\u00bb.<\/p>\n<\/div>\n<table width=\"602\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"123\"><strong>Variable<\/strong><\/td>\n<td width=\"480\"><strong>Descripci\u00f3<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>$0<\/code><\/td>\n<td width=\"480\">Cont\u00e9 el contingut del registre d\u2019entrada<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>$1<\/code><\/td>\n<td width=\"480\">Primer camp<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>$2<\/code><\/td>\n<td width=\"480\">Segon camp, i aix\u00ed successivament<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>NF<\/code><\/td>\n<td width=\"480\"><em>Number of fields<\/em>. Nombre de camps (nombre de columnes)<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>FS<\/code><\/td>\n<td width=\"480\">Separador de camp d\u2019entrada<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>OFS<\/code><\/td>\n<td width=\"480\">Separador de camp de sortida<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>NR<\/code><\/td>\n<td width=\"480\"><em>Number of records<\/em>. Nombre de registres (nombre de l\u00ednies)<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>RS<\/code><\/td>\n<td width=\"480\">Separador de registre d\u2019entrada<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>ORS<\/code><\/td>\n<td width=\"480\">Separador de registre de sortida<\/td>\n<\/tr>\n<tr>\n<td width=\"123\"><code>Filename<\/code><\/td>\n<td width=\"480\">Nom de l\u2019arxiu d\u2019entrada actualment en processament.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Font: elaboraci\u00f3 pr\u00f2pia.<\/p>\n<\/div>\n<p>Important: per defecte, el separador de camps \u00e9s l\u2019espai en blanc, i el separador de registres \u00e9s el salt de l\u00ednia.<\/p>\n<p>En general, a l\u2019int\u00e8rpret d\u2019ordres <code>gawk<\/code> se li subministren dos tipus de dades:<\/p>\n<ul>\n<li>un fitxer d\u2019ordres o programa,<\/li>\n<li>un o m\u00e9s arxius d\u2019entrada.<\/li>\n<\/ul>\n<p>Un fitxer d\u2019ordres (que pot ser un fitxer com a tal, o pot presentar-se en invocar <code>gawk<\/code> des de la l\u00ednia d\u2019ordres) cont\u00e9 una s\u00e8rie de sent\u00e8ncies que li indiquen a <code>gawk<\/code> com processar el fitxer d\u2019entrada. \u00c9s a dir, cont\u00e9 el programa escrit en sintaxi <strong>GAWK<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'programa_GAWK' arxiu1 arxiu2 \u2026<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk -f 'arxiu_amb_codi_GAWK' arxiu1 arxiu2<\/pre>\n<p>A continuaci\u00f3, en tenim diversos exemples. Primer es genera un arxiu <em>in situ<\/em> amb seq\u00fc\u00e8ncies en format FASTA i amb l\u00ednies en blanc entre elles.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo -e\u00a0 \"&gt;seq01\\nACCTAT\\n\\n&gt;seq02\\nCACCGA\\n\\n&gt;seq03\\nAAAACAGAG\\n\\n\" &gt; seq\u00fcencia.txt<\/pre>\n<p># Visualitzem el fitxer comptant les l\u00ednies amb l\u2019opci\u00f3 <em>-n<\/em><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ cat -n seq\u00fcencia.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">1    &gt;seq01\r\n2    ACCTAT\r\n3 \r\n\r\n4    &gt;seq02\r\n\r\n5    CACCGA\r\n\r\n6 \r\n\r\n7    &gt;seq03\r\n\r\n8    AAAACAGAG\r\n\r\n9 \r\n\r\n10<\/pre>\n<p># S\u2019utilitza <code>gawk<\/code> per imprimir nom\u00e9s les l\u00ednies que continguin almenys un camp <strong>no<\/strong> buit<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'NF &gt; 0' seq\u00fcencia.txt | nl<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">1   &gt;seq01\r\n\r\n2   ACCTAT\r\n\r\n3   &gt;seq02\r\n\r\n4   CACCGA\r\n\r\n5   &gt;seq03\r\n\r\n6   AAAACAGAG<\/pre>\n<p># Imprimeix les primeres 7 l\u00ednies<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'NR &lt;= 7' seq\u00fcencia.txt | cat -n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">1   &gt;seq01\r\n\r\n2   ACCTAT\r\n\r\n3\r\n\r\n4   &gt;seq02\r\n\r\n5   CACCGA\r\n\r\n6\r\n\r\n7   &gt;seq03<\/pre>\n<p># Imprimeix les dues primeres l\u00ednies i a partir de la sisena; a m\u00e9s, elimina els registres buits. En aquest cas l\u2019\u00fas dels par\u00e8ntesis aconsegueix que es compleixin les dues condicions<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'NF &gt; 0 &amp;&amp; (NR &lt;= 2 || NR &gt;= 6)' seq\u00fcencia.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">&gt;seq01\r\n\r\nACCTAT\r\n\r\n&gt;seq03\r\n\r\nAAAACAGAG<\/pre>\n<p>En el camp de la bioinform\u00e0tica, el fitxer d\u2019entrada est\u00e0 normalment estructurat amb un format taula, per defecte amb camps separats per espais o tabuladors (taules). Es mostren exemples amb l\u2019ordre <code>gawk<\/code> de les possibilitats d\u2019acci\u00f3 d\u2019aquesta ordre.<\/p>\n<p>C\u00f2pia en el teu terminal el fitxer mostrat a continuaci\u00f3 i anomena\u2019l <em>ensamble.txt<\/em><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">#assembly_accession\u00a0 organism_name\u00a0\u00a0 seq_rel_date\u00a0\u00a0\u00a0 asm_name\u00a0\u00a0 submitter\r\n\r\nGCA_000004195.4 Drosophila melanogaster\u00a0\u00a0\u00a0 2021-07-01 dm6\u00a0 NCBI\r\n\r\nGCA_011586765.1 Arabidopsis thaliana 2022-04-11 Araport11\u00a0 NCBI\r\n\r\nGCA_009859395.1 Mus musculus\u00a0\u00a0\u00a0 2022-02-08 GRCm39\u00a0\u00a0\u00a0 NCBI\r\n\r\nGCA_004115215.2 Caenorhabditis elegans\u00a0\u00a0\u00a0\u00a0 2022-03-16 WBcel235\u00a0\u00a0 NCBI\r\n\r\nGCA_016590495.1 Rattus norvegicus\u00a0\u00a0\u00a0 2022-02-25 Rnor_6.0\u00a0\u00a0 NCBI\r\n\r\nGCA_009722195.1 Xenopus tropicalis\u00a0\u00a0 2022-01-24 Xenopus_tropicalis_v9.1\u00a0\u00a0\u00a0 NCBI\r\n\r\nGCA_017527675.1 Phaeodactylum tricornutum\u00a0 2022-03-24 Phatr3.0\u00a0\u00a0 NCBI\r\n\r\nGCA_011586775.1 Xenopus tropicalis\u00a0\u00a0 2022-04-11 Xenbase_v9.2\u00a0\u00a0\u00a0 NCBI\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ head -3 ensamble.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GCA_000004195.4 Drosophila melanogaster\u00a0\u00a0\u00a0 2021-07-01 dm6\u00a0 NCBI\r\nGCA_011586765.1 Arabidopsis thaliana 2022-04-11 Araport11\u00a0 NCBI\r\nGCA_009859395.1 Mus musculus\u00a0\u00a0\u00a0 2022-02-08 GRCm39\u00a0\u00a0\u00a0 NCBI<\/pre>\n<p># Imprimeix la primera, la segona, la quarta i l\u2019\u00faltima columna del fitxer<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'BEGIN{FS=\"\\t\"} {print $1, $2, $4, $NF}' ensamble.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GCA_000004195.4 Drosophila melanogaster dm6 NCBI\r\n\r\nGCA_011586765.1 Arabidopsis thaliana Araport11\u00a0 NCBI\r\n\r\nGCA_009859395.1 Mus musculus GRCm39 NCBI\r\n\r\nGCA_004115215.2 Caenorhabditis elegans\u00a0\u00a0\u00a0\u00a0 WBcel235 NCBI\r\n\r\nGCA_016590495.1 Rattus norvegicus Rnor_6.0 NCBI\r\n\r\nGCA_009722195.1 Xenopus tropicalis Xenopus_tropicalis_v9.1 NCBI\r\n\r\nGCA_017527675.1 Phaeodactylum tricornutum Phatr3.0 NCBI\r\n\r\nGCA_011586775.1 Xenopus tropicalis Xenbase_v9.2 NCBI<\/pre>\n<p># Si s\u2019indica que el <strong>separador de camp de la sortida<\/strong> OFS sigui tamb\u00e9 un tabulador, l\u2019estructura final de l\u2019arxiu s\u2019assemblar\u00e0 al d\u2019entrada<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'BEGIN{FS=\"\\t\"; OFS=FS} {print $1, $2, $4, $NF}' ensamble.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GCA_000004195.4 Drosophila melanogaster\u00a0\u00a0\u00a0 dm6\u00a0 NCBI\r\n\r\nGCA_011586765.1 Arabidopsis thaliana Araport11\u00a0 NCBI\r\n\r\nGCA_009859395.1 Mus musculus\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 GRCm39\u00a0\u00a0\u00a0\u00a0 NCBI\r\n\r\nGCA_004115215.2 Caenorhabditis elegans\u00a0\u00a0\u00a0\u00a0 WBcel235\u00a0\u00a0 NCBI\r\n\r\nGCA_016590495.1 Rattus norvegicus\u00a0\u00a0\u00a0 Rnor_6.0\u00a0\u00a0 NCBI\r\n\r\nGCA_009722195.1 Xenopus tropicalis\u00a0\u00a0 Xenopus_tropicalis_v9.1\u00a0\u00a0\u00a0 NCBI\r\n\r\nGCA_017527675.1 Phaeodactylum tricornutum\u00a0 Phatr3.0\u00a0\u00a0 NCBI\r\n\r\nGCA_011586775.1 Xenopus tropicalis\u00a0\u00a0 Xenbase_v9.2\u00a0\u00a0\u00a0 NCBI<\/pre>\n<p># Es realitza una recerca literal en aquest fitxer<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'BEGIN{FS=\"\\t\"; OFS=FS} \/tropicalis\/ {print $1, $2, $4, $NF}' ensamble.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GCA_009722195.1 Xenopus tropicalis\u00a0\u00a0 Xenopus_tropicalis_v9.1\u00a0\u00a0\u00a0 NCBI\r\n\r\nGCA_011586775.1 Xenopus tropicalis\u00a0\u00a0 Xenbase_v9.2\u00a0\u00a0\u00a0 NCBI<\/pre>\n<p># Es realitza una recerca literal d\u2019abs\u00e8ncia<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ gawk 'BEGIN{FS=\"\\t\"; OFS=FS} '\\!\/e\/' {print $1, $2, $4, $NF}' ensamble.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GCA_011586765.1 Arabidopsis thaliana Araport11\u00a0 NCBI\r\n\r\nGCA_009859395.1 Mus musculus\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 GRCm39\u00a0\u00a0\u00a0\u00a0 NCBI<\/pre>\n<p>Si busques dominar <code>gawk<\/code>, \u00e9s crucial que aprenguis a manejar correctament les variables NR, FS i OFS. Els exemples anteriors et donaran una comprensi\u00f3 profunda del seu comportament per defecte, aix\u00ed com de com manipular-les per modelar adequadament l\u2019estructura dels registres de dades. Per tant, et recomanem que els estudi\u00efs amb deteniment.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L\u2019ordre gawk \u00e9s una eina capa\u00e7 d\u2019executar un bloc de codi sobre atributs individuals de cada registre emmagatzemat en les l\u00ednies d\u2019un arxiu de text. En processar les dades, \u00e9s possible generar una nova l\u00ednia de resultats, que es pot mostrar per pantalla o guardar en un nou arxiu de text. L\u2019ordre gawk recorre el [&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\/wp-json\/wp\/v2\/pages\/723"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/comments?post=723"}],"version-history":[{"count":12,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/723\/revisions"}],"predecessor-version":[{"id":1255,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/723\/revisions\/1255"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/media?parent=723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}