El Linux look
El comando recorre un archivo y enumera todas las líneas que comienzan con una palabra o frase en particular. ¡Pero cuidado! Se comporta de manera distinto en diferentes distribuciones de Linux. Este tutorial le mostrará cómo usarlo.
El comando Look de Ubuntu se comporta de manera distinto
Para un comando simple, pero útil, look
ciertamente me dio un vuelco cuando estaba investigando este post. Hubo dos problemas: compatibilidad y documentación.
Este post se verificó con Ubuntu, Fedora y Manjaro. look
se incluyó con cada una de esas distribuciones, lo cual fue genial. El problema era que el comportamiento no era el mismo en los tres. La versión de Ubuntu era muy distinto. De acuerdo con la Páginas de manual de Ubuntu, el comportamiento debería ser el mismo.
Eventualmente lo descubrí. look
utiliza tradicionalmente un búsqueda binaria, mientras que Ubuntu look
utiliza un búsqueda lineal. Las páginas de manual de Ubuntu en línea para Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) y Disco Dingo (19.04) comentan que la versión de Ubuntu utiliza una búsqueda binaria, lo cual no es el caso.
Si echamos un vistazo a la local Página de manual de Ubuntu, vemos que claramente establece su look
utiliza una búsqueda lineal. Hay una opción en la línea de comandos para forzarlo a utilizar una búsqueda binaria. Ninguna de las versiones de las otras distribuciones cuenta con una opción para seleccionar entre los métodos de búsqueda.
man look
Desplazándose hacia abajo por la página del manual, vemos la sección que describe esta versión de look
usando una búsqueda lineal en lugar de binaria.
La moraleja de la historia es chequear primero las páginas del manual local.
Búsqueda lineal versus búsqueda binaria
El método de búsqueda binaria es más rápido y eficiente que una búsqueda lineal. Trabajar con archivos grandes hace que esto sea muy evidente. La desventaja de la búsqueda binaria es que su archivo debe estar ordenado. Si no desea ordenar su archivo, ordene una copia y posteriormente úselo con look
.
Demostraremos esto en otra parte de este post. Solo tenga en cuenta que en Fedora, Manjaro y espero que la mayoría del resto del mundo Linux, deberá crear una copia ordenada de su archivo y trabajar con eso.
Instalando palabras
look
puede funcionar con cualquier archivo de texto que elija, o puede funcionar con el archivo de diccionario local «palabras».
En Manjaro necesitas instalar el archivo «palabras». Utilice este comando:
sudo pacman -Syu words
Usando mirada
Para este post, trabajaremos con un archivo de texto del Edward Lear poema «Los Jumblies».
Veamos su contenido con este comando:
less the-jumblies.txt
Aquí está la primera parte del poema. Tenga en cuenta que estamos usando Ubuntu, por lo que el archivo permanece sin categorizar. Para Fedora y Manjaro, trabajaríamos con una copia ordenada del archivo, que cubriremos más adelante en este post.
Si buscamos líneas que comiencen con la palabra “Ellos”, descubriremos algo de lo que hicieron los Jumblies.
look They the-jumblies.txt
look
responde enumerando estas líneas:
Ignorando el caso del personaje
Para hacer look
ignore las diferencias entre mayúsculas y minúsculas, utilice la -f
(ignorar mayúsculas y minúsculas). Hemos usado «ellos» como la palabra de búsqueda nuevamente, pero esta vez, está en minúsculas.
look -f they the-jumblies.txt
Esta vez, los resultados incluyen una línea adicional.
La línea que comienza con «ELLOS» se omitió en el último conjunto de resultados debido a que está en mayúsculas y no coincide con nuestro término de búsqueda, «Ellos».
Ignorar el caso posibilita look
para incorporarlo en los resultados.
Utilizar apariencia con un archivo ordenado
Si su distribución de Linux cuenta con una versión de look
que sigue el comportamiento tradicional de utilizar una búsqueda binaria, debe ordenar su archivo o trabajar con una copia ordenada del mismo.
Repitamos el comando para buscar «Ellos», pero esta vez en Manjaro.
Como puede ver, no se devolvieron resultados. Pero sabemos que hay líneas en el poema que comienzan con la palabra «Ellos».
Hagamos una copia ordenada del archivo. Si vas a utilizar el -f
(ignorar mayúsculas y minúsculas) o -d
(solo caracteres alfanuméricos y espacios) opciones con look
, debe utilizarlos al ordenar el archivo.
los -o
La opción (salida) le posibilita especificar el nombre del archivo al que se deben agregar las líneas ordenadas. En este ejemplo, es «sorted.txt».
sort -f -d the-jumblies.txt -o sorted.txt
Usemos look
en el archivo sorted.txt y posteriormente use el -f
y -d
opciones.
Ahora, obtenemos los resultados que esperábamos.
Considere solo espacios y alfanuméricos
Para hacer que parezca ignorar cualquier cosa que no sea un caracteres alfanuméricos o un espacio, utiliza el -d
Opción (alfanumérica).
Veamos si hay alguna palabra que comience con «Oh».
look -f oh the-jumblies.txt
No se devuelven resultados por look
.
Intentemos de nuevo y digamos a look que ignore cualquier cosa que no sean caracteres alfanuméricos y espacios. Eso significa que se ignorarán los caracteres y símbolos, como la puntuación.
look -f -d oh the-jumblies.txt
Esta vez, obtenemos un resultado. No encontramos esta línea antes debido a que las comillas y el signo de exclamación confundían la búsqueda.
Especificación del carácter de terminación
Puedes decir look
para usar un carácter específico como carácter final. Por lo general, los espacios y el final de las líneas se usan como carácter final.
los -t
La opción (terminar carácter) nos posibilita especificar el carácter que nos gustaría utilizar. En este ejemplo, usaremos el carácter de apóstrofe. Necesitamos citarlo con una barra inclinada hacia atrás para que look
sabe que no estamos abriendo una cadena.
Además estamos citando el término de búsqueda debido a que incluye un espacio. Buscamos dos palabras.
look -f -t ' "they call" the-jumblies.txt
Los resultados coinciden con el término de búsqueda, terminado por el apóstrofo que usamos como carácter de terminación.
Utilizar mirar sin archivo
Si no proporciona un nombre de archivo en la línea de comando, busque usos el archivo de palabras.
El comando:
da estos resultados:
Estas son todas las palabras del archivo que comienzan con la palabra «círculo».
no busque más
Eso es todo lo que hay para look
.
Es bastante sencillo una vez que sabe que existen diferentes comportamientos en diferentes distribuciones de Linux, y ha tocado fondo si su versión utiliza una búsqueda binaria o lineal.
setTimeout(function(){
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘335401813750447’);
fbq(‘track’, ‘PageView’);
},3000);