{"id":198,"date":"2018-02-01T11:00:52","date_gmt":"2018-02-01T11:00:52","guid":{"rendered":"http:\/\/maburro-robermb.rhcloud.com\/?p=198"},"modified":"2019-06-28T14:46:01","modified_gmt":"2019-06-28T14:46:01","slug":"awk-introduccion-y-ejemplos","status":"publish","type":"post","link":"https:\/\/robermb.com\/blog\/geeks\/unix\/awk-introduccion-y-ejemplos\/","title":{"rendered":"AWK: Introducci\u00f3n y ejemplos"},"content":{"rendered":"<h3>AWK<\/h3>\n<p><b>AWK<\/b>\u00a0es un lenguaje de programaci\u00f3n dise\u00f1ado para <strong>procesar datos<\/strong> basados en texto(ficheros, flujos de datos, etc).\u00a0La funci\u00f3n b\u00e1sica de AWK es buscar en los archivos o flujos de datos\u00a0l\u00edneas con patrones determinados y realizaci\u00f3n de acciones especificas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1416 alignleft\" src=\"http:\/\/robermb.com\/blog\/wp-content\/uploads\/2014\/02\/shell.jpg\" alt=\"\" width=\"139\" height=\"139\" srcset=\"https:\/\/robermb.com\/blog\/wp-content\/uploads\/2014\/02\/shell.jpg 225w, https:\/\/robermb.com\/blog\/wp-content\/uploads\/2014\/02\/shell-150x150.jpg 150w\" sizes=\"(max-width: 139px) 100vw, 139px\" \/><\/p>\n<p>Es muy utilizado para procesar la salida de otro comando y realizar tareas m\u00e1s o menos complejas como <strong>sustituciones<\/strong>, <strong>eliminaciones<\/strong>, <strong>comparaciones<\/strong>,&#8230; Te da una gran versatilidad para este tipo de tareas.<\/p>\n<h3>Sintaxis<\/h3>\n<p><code># awk \u201e [condici\u00f3n] { acci\u00f3n } \u201e fichero<\/code><br \/>\n<code># fichero | awk \u201e [condici\u00f3n] { acci\u00f3n } \u201e<\/code><\/p>\n<h3>Ejemplos de AWK<\/h3>\n<p><strong>Muestra<\/strong> solo la <strong>columna<\/strong> 9 de la salida del comando &#8220;ls -ltr *.flar&#8221;:<br \/>\n<code>ls -ltr *.flar | awk '{print $9}'<\/code><\/p>\n<p><strong>Muestra<\/strong>\u00a0solo la <strong>columna<\/strong> 1 utilizando el <strong>delimitador<\/strong> \u201c:\u201d de la salida del comando &#8220;cat OK_backups.out&#8221;:<br \/>\n<code>cat OK_backups.out | awk -F \":\" '{print $1}'<\/code><\/p>\n<p><strong>Compara<\/strong> dos ficheros. Si la linea COMPLETA se repite, muestra las lineas que solo estan en file1.txt y no estan en file2.txt<\/p>\n<p><code>awk 'NR == FNR{a[$0];next} !($0 in a)' listado_backup_semanal listado_maquinas<\/code><\/p>\n<p><strong>Busca<\/strong> y <strong>reemplaza<\/strong> &#8220;palabra1&#8221; por &#8220;palabra2&#8221; l\u00ednea a l\u00ednea:<\/p>\n<p><code>awk '{sub(\/palabra1\/,\"palabra2\")}; 1' # replace only 1st instance<br \/>\ngawk '{$0=gensub(\/palabra1\/,\"palabra2\",4)}; 1' # replace only 4th instance<br \/>\nawk '{gsub(\/palabra1\/,\"palabra2\")}; 1' # replace ALL instances in a line<\/code><\/p>\n<p><strong>Compara<\/strong> dos ficheros y muestra las lineas COMPLETAS que se repiten en los 2 archivos:<\/p>\n<p><code>awk 'NR==FNR{a[$0];next} $0 in a' file1 file2<\/code><\/p>\n<p><strong>Compara<\/strong> dos ficheros y saca los registros en los que el primer campo es el mismo para los 2 archivos<\/p>\n<p><code>awk -F: 'NR==FNR{a[$1]=$1;next;}{if ($1 in a) print $0;}' 'OFS=:' file2 file1 &gt; file_repetidos<\/code><\/p>\n<p><strong>Compara<\/strong> dos ficheros MEDIANTE EL PRIMER CAMPO y saca solo los registros que se encuentran en file1 y no estan en file2<\/p>\n<p><code>awk -F: 'NR==FNR{a[$1]=$1;next;}!($1 in a)' file2 file1 &gt; file3<\/code><\/p>\n<p><strong>Borrar<\/strong> las l\u00edneas repetidas de un fichero<\/p>\n<p><code>awk -F: '!_[$1]++' file1 &gt; file2<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AWK AWK\u00a0es un lenguaje de programaci\u00f3n dise\u00f1ado para procesar datos basados en texto(ficheros, flujos de datos, etc).\u00a0La funci\u00f3n b\u00e1sica de &hellip; <a href=\"https:\/\/robermb.com\/blog\/geeks\/unix\/awk-introduccion-y-ejemplos\/\" class=\"more-link\">More <span class=\"screen-reader-text\">AWK: Introducci\u00f3n y ejemplos<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1416,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[81,53],"_links":{"self":[{"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/posts\/198"}],"collection":[{"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/comments?post=198"}],"version-history":[{"count":16,"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":1698,"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/posts\/198\/revisions\/1698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/media\/1416"}],"wp:attachment":[{"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/media?parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/categories?post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robermb.com\/blog\/wp-json\/wp\/v2\/tags?post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}