Curso Básico de UNIX

Comandos de Filtro

Referencias

dd find grep, fgrep, egrep sort tr uniq
 
 

dd

dd OPCION ...

copia un archivo, de entrada estándar a salida estándar por defecto, opcionalmente cambiando tamaño de bloques de entrada salida y realizando diversas conversiones.

if=ARCHIVO  leer la entrada del archivo indicado.
of=ARCHIVO  dirigir la salida al archivo indicado.
ibs=BYTES   leer la entrada en bloques de BYTES bytes.
obs=BYTES   grabar la salida en bloques de BYTES bytes.
bs=BYTES    leer y grabar entrada y salida en bloques.
conv=CONVERSION[,CONVERSION]... convertir según argumentos.


Las opciones numéricas admiten los multiplicadores b para 512, k para 1024.

Los argumentos de conversión se separan por comas sin espacios; incluyen:

ascii  convierte EBCDIC a ASCII.
ebcdic   convierte ASCII a EBCDIC.
ibm    convierte ASCII a EBCDIC alternativo.
block  embloca cada línea de entrada en 'cbs' bytes, reemplaza
       nueva línea por espacio, rellena con espacios.
unblock  reemplaza espacios finales de cada bloque con nueva línea.
lcase  convierte mayúsculas a minúsculas
ucase  convierte minúsculas a mayúsculas.
notrunc  no truncar el archivo de salida.

find

find [DIRECTORIO...] [EXPRESION]

Recorre una jerarquía de directorios buscando archivos seleccionados según cierta expresión y muestra información sobre los encontrados.

Argumentos numéricos:

+N  mayor que N
-N  menor que N
 N  exactamente N.


Criterios de búsqueda:

-name PATRON   el nombre aparea con PATRON;
-iname PATRON  idem,insensible a mayúculas;
-path PATRON   nombre con vía completa;
-ipath PATRON  idem, insensible a mayústulas;
-regexp EXP    nombre aparea con expresión regular EXP
-iregexp EXP   idem, insensible a mayúsculas;
-lname PATRON  archivo es un enlace simbólico;
-ilname PATRON idem, insensible a mayúsculas;
-atime N       último acceso N*24 horas atrás
-ctime N       último cambio de estado N*24 horas atrás
-mtime N       última modificación N*24 horas atrás
-amin N        último acceso N minutos atrás
-cmin N        último cambio de estado N minutos horas atrás
-mmin N        última modificación N minutos atrás
-daystart      mide tiempos desde las 0 horas de hoy
-size N[bckw]  tamaño de N bloques, caracteres, KB o palabras (2 bytes)
-empty         archivo vacío, regular o directorio
-user UNAME    archivo del usuario UNAME
-group GNAME   archivo del grupo GNAME
-uid N         archivo del usuario de número N
-gid N         archivo del grupo de número N
-nouser        archivo sin dueño asignado
-nogroup       archivo sin grupo asignado


Acciones:

-print   imprime la ruta completa de los archivos encontrados.
-ls      lista los archivos encontrados en formato ls -dils
-exec COMANDO {} \; ejecuta COMANDO sobre los archivos encontrados
  find /usr/local/doc -name '*.texi'
busca en el directorio indicado los archivos de nombre indicado.
  find /usr/src -name '*.c' -size +100k -print
muestra nombres de archivos terminados en .c con tamaño mayor de 100 K.
  find . -lname '*sysdep.c'
busca enlaces simbólicos del nombre indicado.
  find /u/bill -amin +2 -amin -6
archivos que fueron leídos entre 2 y 6 minutos atrás.
La medición de tiempos se hace desde 24 horas atrás (1 día atrás); para medir tiempos desde las 0 horas del día de hoy, usar la opción -daystart.
  find ~ -daystart -type f -mtime 1
archivos que fueron modificados ayer.
  find / -empty -exec rm -rf '{}' ';'
busca archivos o directorios vacíos y los elimina.
  find . -name '*.h' -exec diff -u '{}' /tmp/master ';'
compara archivos de "header" (*.h) del directorio corriente contra el archivo /tmp/master.

grep, egrep, fgrep

grep [ -e PATRON | -f ARCHIVO | PATRON ] OPCIONES ARCHIVO ...

recorre los archivos indicados extrayendo las líneas que aparean con un patrón de cadena de caracteres.

-G  el patrón es una expresión regular básica; opción por defecto
-E  el patrón es una expresión regular extendida
-F  el patrón es una cadena fija


Existen dos variantes: egrep, similar a grep -E, y fgrep, igual a grep -F.

-c  sólo muestra la cantidad de líneas
-e PATRON usa el patrón indicado; útil cuando el patrón empieza con -
-f ARCHIVO obtiene los patrones del archivo, uno por línea
-h  suprime indicación de archivo cuando se busca en varios archivos
-i  ignora mayúsculas y minúsculas en el patrón y en los archivos
-n  indicar número de línea
-v  muestra las líneas que no aparean con el patrón
-w  aparea el patrón como una palabra
-x  el patrón aparea con toda la línea

sort

sort [OPCIONES] [ARCHIVO...]
 
ordena, mezcla o compara todas las líneas de los archivos indicados o de la entrada estándar. Tiene 3 modos de operación: ordenar, verificar orden, mezclar archivos.
 
-c  verifica si los archivos ya están ordenados
-m  mezcla archivos ordenados en uno solo, ordenado
 
-b  ignora blancos adelante en la ordenación
-d  ordena considerando sólo letras, números y blancos
-f  ordena como si todas fueran mayúsculas
-i  ignora caracteres no imprimibles (fuera de 040-0176 octal)
-n  ordena como valores numéricos y no como ASCII
-r  invertir el sentido de la ordenación
-o arch  archivo de salida; puede ser el de entrada
-t  usar el caracter indicado como separador de campos
-k POS1[,POS2] campos de ordenación, POS1 hasta POS2 inclusive;
              o hasta el final si no hay POS2
 
Las posiciones POS1 y POS2 son de la forma F.C donde F es el número del campo y C es el primer caracter desde el comienzo del campo (para POS1) o desde el final del campo (para POS2); si se omite C se ordena tomando en cuenta el primer caracter del campo.
 
  cat /etc/passwd | sort -t:
  cat /etc/passwd | sort -t: +4 -f | cut -d: -f5
  cat /etc/passwd | sort -t: +5 | cut -d: -f6
  cat /etc/passwd | sort -t: -n -k3,5 | cut -d: -f4,5

tr

tr [OPCION]... CONJ1 [CONJ2]

copia entrada en salida traduciendo, comprimiendo o borrando caracteres. CONJ1 y CONJ2 definen un conjunto ordenado de caracteres a transformar. La opción -c reemplaza CONJ1 por su complemento, los caracteres no especificados en el conjunto.

-d  elimina los caracteres de CONJ1.
-s  comprime caracteres repetidos en CONJ1 en una sola ocurrencia.
-ds primero borra según CONJ1 y después comprime según CONJ2.


El formato de CONJ1 y CONJ2 se parece al de las expresiones regulares, pero son sólo listas de caracteres. La mayoría de los caracteres se representan a sí mismos, pero existen las siguientes abreviaturas:

\a  Control-G,
\b  Control-H,
\f  Control-L,
\'  Control-J,
\r  Control-M,
\t  Control-I,
\v  Control-K,
\OOO  caracter representado por dígitos octales
\\  barra inversa.
 
M-N  intervalo de caracteres desde el M al N (M anterior al N)
0-9  equivale a 0123456789


La notación [:CLASE:] expande a los caracteres predefinidos en las clases:

alnum  letras y números.
alpha  letras.
blank  espacio.
cntrl  caracteres de control.
digit   números.
graph  caracteres imprimibles, excluído el espacio.
lower  minúsculas
print  caracteres imprimibles, incluído el espacio.
punct  signos de puntuación.
space  espacio
upper  mayúsculas.
xdigit  dígitos hexadecimales.


La traducción se realiza cambiando el primer caracter de CONJ1 por el primer caracter de CONJ2, el 2o. de CON1 por el 2o. de CONJ2, etc. Los caracteres no indicados en CONJ1 pasan incambiados.

  tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
  tr a-z A-Z
  tr '[:lower:]' '[:upper:]'
convierten minúsculas en mayúsculas.
  tr -d '\000'
elimina caracteres nulos (octal 000).
  tr -cs '[a-zA-Z0-9]' '[\n*]'
separa las palabras una por línea.
  tr -s '\n'
comprime caracteres nueva línea en uno solo (elimina líneas en blanco).

uniq

uniq [OPCION]... [ENTRADA [SALIDA]]

muestra una única línea para una entrada ordenada, eliminando líneas repetidas sucesivas. Opcionalmente, puede mostrar solo líneas que aparecen una vez, o sólo líneas que aparecen varias veces. La entrada debe estar ya ordenada; si no lo está, puede usars sort -u para lograr un efecto similar.

-f N  saltear N campos antes de verificar unicidad.
-s N  saltear N caracteres antes de verificar unicidad.
-c    indicar junto a cada línea el número de veces que aparece.
-i    ignorar mayúsculas y minúsculas al comparar.
-d    mostrar sólo líneas repetidas.
-u    mostrar sólo líneas únicas.


Los campos son cadenas de caracteres separadas por uno o más blancos (espacios o tabuladores). Si se indican saltear campos y caracteres, los campos se saltean primero.

Referencias:

  • Linux Debian/GNU. Páginas man, info.
  •  
    Víctor A. González Barbone  vagonbar en fing edu uy
    Instituto de Ingeniería Eléctrica - Facultad de Ingeniería - Montevideo, Uruguay.