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.