Sophie

Sophie

distrib > Mandriva > 10.0 > i586 > by-pkgid > 48e6004f7274ccc2095a5ab8f2460dd2 > files > 32

mandrake-doc-es-10.0-5.1.100mdk.noarch.rpm

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Operaciones y filtrado de archivos</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Guía de Referencia"><link rel="up" href="cmdutils.html" title="Capítulo 5. Los utilitarios de la línea de
  comandos"><link rel="previous" href="cmdutils.html" title="Capítulo 5. Los utilitarios de la línea de
  comandos"><link rel="next" href="command-find.html" title="find: Busca archivos en función de ciertos
   criterios"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Operaciones y filtrado de archivos</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="cmdutils.html">Anterior</a> </td><th width="60%" align="center">Capítulo 5. Los utilitarios de la línea de
  comandos</th><td width="20%" align="right"> <a accesskey="n" href="command-find.html">Siguiente</a></td></tr></table><hr></div><div class="sect1" lang="es"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="command-files"></a>Operaciones y filtrado de archivos</h2></div></div><div></div></div><p><a name="BId-cmdutils-pa3"></a>La mayoría del trabajo de línea de comandos
   se realiza sobre archivos. En esta sección discutimos cómo mirar y
   filtrar el contenido de archivos, tomar la información necesaria de
   los archivos utilizando un único comando, y ordenar
   archivos.</p><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="command-cat"></a>cat, tail, head, tee: Comandos de
    impresión de archivos</h3></div></div><div></div></div><p><a name="BId-cmdutils-pa4"></a>Estos comandos tienen casi la misma
    sintaxis: <a name="BId-cmdutils-sc1"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">nombre_del_comando [opciones] [archivo(s)]</pre></td></tr></table><p>
    
    y se pueden usar en una tubería. Todos se utilizan para imprimir
    parte de un archivo de acuerdo con ciertos criterios.</p><p><a name="BId-cmdutils-pa5"></a>El utilitario <span><b class="command">cat</b></span>
    concatena archivos e imprime en la salida estándar. Este es uno de
    los comandos más ampliamente utilizados. Usted puede usar:</p><a name="BId-cmdutils-pl1"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># cat /var/log/mail/info</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa139"></a>para imprimir, por ejemplo, el
    contenido del archivo de registro de un demonio de correo a la
    salida estándar<sup>[<a name="id2543485" href="#ftn.id2543485">16</a>]</sup>. El comando <span><b class="command">cat</b></span> tiene una
    opción muy útil (<tt class="option">-n</tt>) que le permite escribir los
    números de todas las líneas de salida.</p><p><a name="BId-cmdutils-pa7"></a>Algunos archivos, como los
    archivos de registro de los demonios (si es que están corriendo)
    por lo general tienen un tamaño enorme<sup>[<a name="id2543544" href="#ftn.id2543544">17</a>]</sup> y no es muy útil
    imprimirlos por completo en la pantalla. Por lo general Usted sólo
    necesita ver algunas líneas del archivo. Puede utilizar el comando
    <span><b class="command">tail</b></span> para ver las últimas líneas. Por lo tanto, el comando
    siguiente va a imprimir las últimas 10 líneas del archivo
    <tt class="filename">/var/log/mail/info</tt>:</p><a name="BId-cmdutils-pl2"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># tail /var/log/mail/info</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa140"></a><tt class="literal">10</tt>
    es el valor predeterminado si no se especifica parámetro alguno.
    Si desea mostrar sólo las 2 últimas líneas puede usar la opción
    <tt class="option">-n</tt>:</p><a name="BId-cmdutils-pl3"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># tail -n2 /var/log/mail/info</pre></td></tr></table><p><a name="BId-cmdutils-pa9"></a>El comando <span><b class="command">head</b></span> es
    similar a <span><b class="command">tail</b></span>, pero imprime las primeras líneas de un
    archivo. Si se usa sin opciones imprime las primeras 10 líneas del
    archivo especificado:</p><a name="BId-cmdutils-pl4"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># head /var/log/mail/info</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa141"></a>Al igual que con <span><b class="command">tail</b></span> Usted
    puede imprimir las primeras 2 líneas de este archivo usando la
    opción <tt class="option">-n</tt>:</p><a name="BId-cmdutils-pl5"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># head -n2 /var/log/mail/info</pre></td></tr></table><p><a name="BId-cmdutils-pa10"></a>También puede usar estos
    comandos juntos. Por ejemplo, si desea mostrar sólo las líneas 9 y
    10, puede usar un comando donde primero el comando <span><b class="command">head</b></span> va
    a seleccionar las primeras 10 líneas de un archivo y pasarlas a
    través de una tubería al comando <span><b class="command">tail</b></span>.</p><a name="BId-cmdutils-pl6"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># head /var/log/mail/info | tail -n2</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa142"></a>La última parte
    luego seleccionará las últimas 2 líneas y las va a imprimir en la
    pantalla. De la misma manera, puede seleccionar la línea número 20
    contando a partir del final de un archivo:</p><a name="BId-cmdutils-pl7"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># tail -n20 /var/log/mail/info | head -n1</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa143"></a>En este ejemplo, le
    decimos a <span><b class="command">tail</b></span> que seleccione las últimas 20 líneas y las
    pase por una tubería a <span><b class="command">head</b></span>. Luego, el comando <span><b class="command">head</b></span>
    imprime la primer línea de los datos obtenidos.</p><p><a name="BId-cmdutils-pa11"></a>Supongamos que deseamos
    imprimir el resultado del último ejemplo en la pantalla y, a la
    vez, guardarlo en el archivo <tt class="filename">resultados.txt</tt>.
    El utilitario <span><b class="command">tee</b></span> nos puede ayudar. La sintaxis del mismo
    es:</p><a name="BId-cmdutils-sc2"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">tee [opciones] [archivo]</pre></td></tr></table><p><a name="BId-cmdutils-pa12"></a>Ahora podemos cambiar el comando anterior
    de esta manera:</p><a name="BId-cmdutils-pl8"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># tail -n20 /var/log/mail/info | head -n1 | tee resultados.txt</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa144"></a>Tomemos otro ejemplo.
    Deseamos seleccionar las últimas 20 líneas, guardarlas en el
    archivo <tt class="filename">resultados.txt</tt>, pero imprimir en
    pantalla sólo la primera de las 20 líneas seleccionadas. Entonces,
    deberíamos teclear:</p><a name="BId-cmdutils-pl9"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># tail -n20 /var/log/mail/info | tee resultados.txt | head -n1</pre></td></tr></table><p><a name="BId-cmdutils-pa13"></a>El comando <span><b class="command">tee</b></span> posee una opción
    útil (<tt class="option">-a</tt>) que le permite añadir los datos
    recibidos a un archivo existente.</p><p><a name="BId-cmdutils-pa14"></a>Volvamos al comando
    <span><b class="command">tail</b></span>. Por lo general, los archivos de registro varían
    dinámicamente debido a que el demonio constantemente añade
    acciones y eventos al archivo de registro. Entonces, si desea
    mirar interactivamente los cambios al archivo de registro puede
    aprovechar una de las opciones más útiles de <span><b class="command">tail</b></span>,
    <tt class="option">-f</tt>:</p><a name="BId-cmdutils-pl10"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># tail -f /var/log/mail/info</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa145"></a>En este caso, todos los cambios
    en el archivo <tt class="filename">/var/log/mail/info</tt> se
    imprimirán de inmediato en la pantalla. Utilizar el comando
    <span><b class="command">tail</b></span> con la opción <tt class="option">-f</tt> es muy útil cuando
    desea saber cómo funciona su sistema. Por ejemplo, mirando a
    través del archivo de registro
    <tt class="filename">/var/log/messages</tt>, puede estar al tanto con
    los mensajes del sistema y varios demonios.</p><p><a name="BId-cmdutils-pa15"></a>En la próxima sección veremos cómo podemos
    utilizar <span class="application">grep</span> como filtro para separar los mensajes de
    <span class="application">Postfix</span> de aquellos mensajes que provienen de otros
    servicios.</p></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="command-grep"></a>grep: Ubicar cadenas de caracteres en
    archivos</h3></div></div><div></div></div><p><a name="BId-cmdutils-pa16"></a><a class="indexterm" name="BId-cmdutils-it1"></a>Ni el acrónimo
     (“<span class="quote">General Regular Expression Parser</span>”, Analizador
     General de Expresiones Regulares), ni el nombre son muy
     intuitivos, pero su uso es simple. <span class="application">grep</span> busca el patrón
     pasado como argumento en uno o más archivos. La sintaxis es:
    
<a name="BId-cmdutils-sc3"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">grep [opciones] &lt;patrón&gt; [uno o más archivos]</pre></td></tr></table><p>  
    
    Si se mencionan varios archivos, los nombres de los mismos
    precederán a cada línea que muestra los resultados que se
    corresponden con el criterio de búsqueda. Use la opción
    <tt class="option">-h</tt> para ocultar estos nombres; use la opción
    <tt class="option">-l</tt> para obtener sólo los nombres de archivo en
    los cuales se cumple la condición de búsqueda. El patrón es una
    expresión regular, aunque generalmente consiste en una palabra
    simple. Las opciones usadas más frecuentemente son las
    siguientes:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdutils-pa17"></a><tt class="option">-i</tt>: realizar una búsqueda
      que ignore la capitalización. (es decir, que ignore la diferencia
      entre las mayúsculas y las minúsculas);</p></li><li><p><a name="BId-cmdutils-pa18"></a><tt class="option">-v</tt>: búsqueda
      inversa. Mostrar las líneas que <span class="emphasis"><em>no</em></span> se
      corresponden con el patrón;</p></li><li><p><a name="BId-cmdutils-pa19"></a><tt class="option">-n</tt>: mostrar, para
      cada línea encontrada, el número de línea;</p></li><li><p><a name="BId-cmdutils-pa20"></a><tt class="option">-w</tt>: le dice a
      <span class="application">grep</span> que el patrón debe corresponderse con una palabra
      completa, es decir debe aparecer tal cual y no como parte de otra
      palabra.</p></li></ul></div><p><a name="BId-cmdutils-pa21"></a>Volvamos entonces a
    analizar el archivo de registro del demonio de correo. Deseamos
    encontrar todas las líneas en el archivo
    <tt class="filename">/var/log/mail/info</tt> que contengan el patrón
    “<span class="quote">postfix</span>”. Entonces tecleamos este comando:</p><a name="BId-cmdutils-pl11"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># grep postfix /var/log/mail/info</pre></td></tr></table><p><a name="BId-cmdutils-pa22"></a>El comando <span class="application">grep</span> se puede utilizar
    en una tubería. Por lo tanto, podemos obtener el mismo resultado
    que en el ejemplo previo haciendo esto:</p><a name="BId-cmdutils-pl12"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># cat /var/log/mail/info | grep postfix</pre></td></tr></table><p><a name="BId-cmdutils-pa23"></a>Si deseamos encontrar
    todas las líneas que no contienen el patrón
    “<span class="quote">postfix</span>”, deberíamos usar la opción
    <tt class="option">-v</tt>:</p><a name="BId-cmdutils-pl13"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># grep -v postfix /var/log/mail/info</pre></td></tr></table><p><a name="BId-cmdutils-pa24"></a>Supongamos que deseamos
    encontrar todos los mensajes acerca de correos enviados
    satisfactoriamente. En este caso tenemos que filtrar todas las
    líneas que fueron añadidas al archivo de registro por el demonio
    de correo (contiene el patrón “<span class="quote">postfix</span>”) y deben
    contener un mensaje acerca del envío satisfactorio
    (“<span class="quote">status=sent</span>”):</p><a name="BId-cmdutils-pl14"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># grep postfix /var/log/mail/info | grep status=sent</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa146"></a>En este caso se
    utiliza a <span class="application">grep</span> dos veces. Esto está permitido, pero no es
    muy elegante. Podemos obtener el mismo resultado utilizando el
    utilitario <span><b class="command">fgrep</b></span>. Primero, debemos crear un archivo que
    contiene los patrones escritos en una columna. Se puede crear tal
    archivo de la manera siguiente (usamos el nombre
    <tt class="filename">patrones.txt</tt>):</p><a name="BId-cmdutils-pl15"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># echo -e 'status=sent\npostfix' &gt; ./patrones.txt</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa147"></a>Luego llamamos al comando
    siguiente donde usamos el archivo
    <tt class="filename">patrones.txt</tt> con una lista de patrones y el
    utilitario <span><b class="command">fgrep</b></span> en vez de la “<span class="quote">doble llamada</span>”
    a <span class="application">grep</span>:</p><a name="BId-cmdutils-pl16"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># fgrep -f ./patrones.txt /var/log/mail/info</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa148"></a>El archivo
    <tt class="filename">./patrones.txt</tt> puede tener tantos patrones
    como Usted desee. Cada uno tiene que estar tecleado en una única
    línea. Por ejemplo, para seleccionar los mensajes acerca de los
    envíos satisfactorios de correo a
    <tt class="literal">peter@mandrakesoft.com</tt>, será suficiente añadir
    esta dirección electrónica en nuestro archivo
    <tt class="filename">./patrones.txt</tt> ejecutando el comando
    siguiente:</p><a name="BId-cmdutils-pl17"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># echo 'peter@mandrakesoft.com' &gt;&gt; ./patterns.txt</pre></td></tr></table><p><a name="BId-cmdutils-pa25"></a>Está claro que puede combinar
    <span class="application">grep</span> con <span><b class="command">tail</b></span> y <span><b class="command">head</b></span>. Si deseamos encontrar
    los mensajes sobre los últimos correos enviados a
    <tt class="literal">peter@mandrakesoft.com</tt>, excepto el último,
    tecleamos:</p><a name="BId-cmdutils-pl18"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># fgrep -f ./patrones.txt /var/log/mail/info | tail -n2 | head -n1</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa149"></a>Aquí aplicamos el filtro descrito
    arriba y colocamos el resultado en una tubería para los comandos
    <span><b class="command">tail</b></span> y <span><b class="command">head</b></span>, los cuales seleccionan los últimos
    valores de los datos recibidos, excepto el último.</p></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="command-wc"></a>wc: Contando elementos en
    archivos</h3></div></div><div></div></div><p><a name="BId-cmdutils-pa26"></a>El comando <span><b class="command">wc</b></span>
    (<span class="foreignphrase"><i class="foreignphrase">Word Count</i></span>, Cuenta de palabras) se
    usa para calcular la cantidad de cadenas y palabras en archivos.
    También es útil para contar bytes, caracteres, y la longitud de la
    línea más larga. Su sintaxis es:</p><a name="BId-cmdutils-sc4"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">wc [opciones] [archivo(s)]</pre></td></tr></table><p><a name="BId-cmdutils-pa27"></a>Las siguientes opciones son útiles:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdutils-pa28"></a><tt class="option">-l</tt>: imprimir la
     cantidad de líneas nuevas;</p></li><li><p><a name="BId-cmdutils-pa29"></a><tt class="option">-w</tt>: imprimir la
     cantidad de palabras;</p></li><li><p><a name="BId-cmdutils-pa30"></a><tt class="option">-m</tt>:
      imprimir la cantidad total de caracteres;</p></li><li><p><a name="BId-cmdutils-pa31"></a><tt class="option">-c</tt>: imprimir la
     cantidad de bytes;</p></li><li><p><a name="BId-cmdutils-pa32"></a><tt class="option">-L</tt>: imprimir la
      longitud de la línea más larga en el texto.</p></li></ul></div><p><a name="BId-cmdutils-pa33"></a>El comando <span><b class="command">wc</b></span> imprime la cantidad
    de líneas nuevas, palabras y caracteres de manera predeterminada.
    Aquí tiene algunos ejemplos de uso:</p><p><a name="BId-cmdutils-pa34"></a>Si deseamos encontrar la cantidad de
    usuarios en nuestro sistema, podemos teclear:</p><a name="BId-cmdutils-pl19"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$wc -l /etc/passwd</pre></td></tr></table><p><a name="BId-cmdutils-pa35"></a>Si deseamos saber la cantidad de <span class="acronym">CPU</span>s en
   nuestro sistema, tecleamos:</p><a name="BId-cmdutils-pl20"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$grep "model name" /proc/cpuinfo | wc -l</pre></td></tr></table><p><a name="BId-cmdutils-pa36"></a>En la sección anterior
    obtuvimos una lista de mensajes acerca de los correos enviados
    satisfactoriamente a las direcciones listadas en nuestro archivo
    <tt class="filename">./patrones.txt</tt>. Si deseamos saber la cantidad
    de dichos mensajes, podemos enviar los resultados de
    nuestro filtro por una tubería al comando <span><b class="command">wc</b></span>:</p><a name="BId-cmdutils-pl21"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"># fgrep -f ./patrones.txt /var/log/mail/info | wc -l</pre></td></tr></table></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="command-sort"></a>sort: Clasificando el
    contenido de los archivos</h3></div></div><div></div></div><p><a name="BId-cmdutils-pa37"></a>Aquí tiene la sintaxis de este poderoso
    utilitario de clasificación<sup>[<a name="id2544810" href="#ftn.id2544810">18</a>]</sup>:</p><a name="BId-cmdutils-sc5"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">sort [opciones] [archivo(s)]</pre></td></tr></table><p><a name="BId-cmdutils-pa39"></a>Consideremos clasificar parte de el
    archivo <tt class="filename">/etc/passwd</tt>. Como puede ver este
    archivo no está clasificado:</p><a name="BId-cmdutils-pl22"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ cat /etc/passwd</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa150"></a>Deseamos clasificarlo por el
    campo <tt class="literal">login</tt>. Entonces tecleamos:</p><a name="BId-cmdutils-pl23"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ sort /etc/passwd</pre></td></tr></table><p><a name="BId-cmdutils-pa40"></a>El comando <span><b class="command">sort</b></span> clasifica datos de
    manera ascendente comenzando por el primer campo (en nuestro caso,
    el campo <tt class="literal">login</tt>) de manera predeterminada. Si
    deseamos clasificar los datos de manera descendente, usamos la
    opción <tt class="option">-r</tt>:</p><a name="BId-cmdutils-pl24"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ sort -r /etc/passwd</pre></td></tr></table><p><a name="BId-cmdutils-pa41"></a>Cada usuario tiene su propio
    <tt class="literal">UID</tt> escrito en el archivo
    <tt class="filename">/etc/passwd</tt>. Clasifiquemos un archivo de
    manera ascendente con el campo <tt class="literal">UID</tt>:</p><a name="BId-cmdutils-pl25"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ sort /etc/passwd -t":" -k3 -n</pre></td></tr></table><p><a name="BIdNEW-cmdutils-pa151"></a>Aquí utilizamos las siguientes
    opciones de <span><b class="command">sort</b></span>:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdutils-pa42"></a><tt class="option">-t":"</tt>: le dice a
      <span><b class="command">sort</b></span> que el símbolo <tt class="literal">:</tt> es el separador
      de campos;</p></li><li><p><a name="BId-cmdutils-pa43"></a><tt class="option">-k3</tt>: significa que la
      clasificación debe hacerse según la tercer columna;</p></li><li><p><a name="BId-cmdutils-pa44"></a><tt class="option">-n</tt>:
      dice que la clasificación ocurrirá sobre datos numéricos, no
      alfabéticos.</p></li></ul></div><p><a name="BId-cmdutils-pa45"></a>Se puede hacer lo mismo
    de manera inversa:</p><a name="BId-cmdutils-pl26"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ sort /etc/passwd -t":" -k3 -n -r</pre></td></tr></table><p><a name="BId-cmdutils-pa46"></a>Note que <span><b class="command">sort</b></span> tiene dos opciones
    importantes:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdutils-pa47"></a><tt class="option">-u</tt>:
      realiza una clasificación estricta: los campos de clasificación
      duplicados se descartan;</p></li><li><p><a name="BId-cmdutils-pa48"></a><tt class="option">-f</tt>:
      ignorar capitalización (trata igual a las minúsculas y a las
      mayúsculas).</p></li></ul></div><p><a name="BId-cmdutils-pa49"></a>Finalmente, si deseamos
    encontrar el usuario con el mayor <tt class="literal">UID</tt> podemos
    usar el comando siguiente:

<a name="BId-cmdutils-pl27"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">$ sort /etc/passwd -t":" -k3 -n | tail -n1</pre></td></tr></table><p>

    donde clasificamos al archivo <tt class="filename">/etc/passwd</tt> de
    manera ascendente de acuerdo a la columna <tt class="literal">UID</tt>,
    y enviamos el resultado por medio de una tubería al comando
    <span><b class="command">tail</b></span> que imprime el primer valor de la lista
    clasificada.</p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2543485" href="#id2543485">16</a>] </sup>Algunos
    ejemplos de esta sección están basados en trabajo real con
    archivos de registro de algunos servidores (servicios, demonios).
    Debe asegurarse que syslogd esté corriendo (permite el registro de
    los demonios), también el demonio correspondiente (en este ejemplo
    <span class="application">Postfix</span>) y que Usted trabaja como <tt class="literal">root</tt>. De todas
    formas, siempre puede aplicar nuestros ejemplos a otros
    archivos.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2543544" href="#id2543544">17</a>] </sup>Por ejemplo, el archivo
    <tt class="filename">/var/log/mail/info</tt> contiene información
    acerca de todos los correos enviados, mensajes acerca de la
    recuperación de correo por parte de los usuarios con el protocolo
    <span class="acronym">POP</span>, etc.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2544810" href="#id2544810">18</a>] </sup>Discutimos a <span><b class="command">sort</b></span> brevemente aquí debido
    a que se podrían escribir libros completos acerca de sus
    características.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="cmdutils.html">Anterior</a> </td><td width="20%" align="center"><a accesskey="u" href="cmdutils.html">Subir</a></td><td width="40%" align="right"> <a accesskey="n" href="command-find.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top">Capítulo 5. Los utilitarios de la línea de
  comandos </td><td width="20%" align="center"><a accesskey="h" href="index.html">Inicio</a></td><td width="40%" align="right" valign="top"> find: Busca archivos en función de ciertos
   criterios</td></tr></table></div></body></html>