Comandos head y tail
Cuando trabajamos con ficheros de texto largos puede que nos interese sólo mostrar una parte del fichero. Habitualmente, las partes que más miramos son el comienzo y el final, por eso hay dos comandos que realizan estas funciones: head para mostrar el comienzo y tail para mostrar el final de un fichero.
Por defecto, tanto head como tail devuelven 10 líneas.
$ head violante.txt Un soneto me manda hacer Violante que en mi vida me he visto en tanto aprieto; catorce versos dicen que es soneto; burla burlando van los tres delante. Yo pensé que no hallara consonante, y estoy a la mitad de otro cuarteto; mas si me veo en el primer terceto, no hay cosa en los cuartetos que me espante.
$ tail violante.txt mas si me veo en el primer terceto, no hay cosa en los cuartetos que me espante. Por el primer terceto voy entrando, y parece que entré con pie derecho, pues fin con este verso le voy dando. Ya estoy en el segundo, y aun sospecho que voy los trece versos acabando; contad si son catorce, y está hecho.
Pero esta cantidad de líneas podemos modificarla con -n y el número de líneas a mostrar, dejando, o no, espacio entre la «n» y el número:
$ head -n4 violante.txt Un soneto me manda hacer Violante que en mi vida me he visto en tanto aprieto; catorce versos dicen que es soneto; burla burlando van los tres delante.
$ tail -n 3 violante.txt Ya estoy en el segundo, y aun sospecho que voy los trece versos acabando; contad si son catorce, y está hecho.
Pero no sólo líneas, sino que podemos extraer un determinado número de bytes con -c y el número de bytes a mostrar:
$ head -c 30 violante.txt Un soneto me manda hacer Viola
Por defecto, cuando head o tail muestra sólo un fichero no indica el nombre del fichero y cuando muestra varios ficheros, por ejemplo, cuando usamos un patrón, como *.txt, sí que muestra el nombre del fichero entre flechas:
$ head *.txt [...] ==> violante.txt <== [...]
Podemos modificar esta acción por defecto con -v para mostrar siempre los nombres de los ficheros:
$ head -v violante.txt ==> violante.txt <== Un soneto me manda hacer Violante que en mi vida me he visto en tanto aprieto; catorce versos dicen que es soneto; burla burlando van los tres delante. Yo pensé que no hallara consonante, y estoy a la mitad de otro cuarteto; mas si me veo en el primer terceto, no hay cosa en los cuartetos que me espante.
O -q para no mostrarlo:
$ head -q *.txt
Tanto head como tail tienen un operador curioso, que es -z. Con -z se elimina el salto de línea, transformándolo por NUL, por lo que aplicándolo sobre un fichero, al eliminar el salto de línea, el resultado que devuelve es el fichero completo, pero es muy útil para usarlo como filtro con otros ficheros eliminando así los saltos de línea.