Ejercicios de TIplE
Índice
1. Días 1 y 2: Ubuntu
- Crea una carpeta llamada
informesdentro de tu carpeta personal. Mediante el procesador de texto de LibreOffice, crea un documento llamado
informe-ubuntu(LibreOffice le añadirá la extensión.odtpor omisión) y guárdalo en la carpetainformes.El documento debe contener la ecuación: \(\Gamma(\alpha) = \psi_\beta.\Delta^\omega\)
Prueba a incluir también
- fórmulas más complejas
- una tabla
- una lista numerada
- una lista no numerada
- un título
- una cabecera y un pie de página
- un texto en cursiva, otro en negrita y otro
monoespaciado - diversos colores de texto y colores de fondo
- Prueba una sustitución global (por ejemplo, cambia todas las comas
por punto y coma) mediante
Edit/Find and Replace. - Exporta el documento a PDF (se creará un documento llamado
informe-ubuntu.pdfen la carpetainformes). - Crea una carpeta llamada «
.secreta» dentro de tu carpeta personal. - Mueve el fichero editable
informe-ubuntu.odta.secreta. - Localiza en el buscador el editor de imágenes GIMP. Arrastra su icono hasta fijarlo en el panel de la izquierda (lanzador). Luego, pulsa sobre el icono con el botón derecho y elige «No mantener en el lanzador» para eliminar el icono.
- Descarga el escudo de la universidad de la dirección
(o busca «escudo uniovi» y elige uno en formato PNG). - Abre dicho escudo con Gimp y modifícalo (por ejemplo, con la
herramienta de selección rectangular selecciona alguna parte
y elimínala con
Editar/Cortar; o ve aImagen/Autorecortar imagen). - Guarda el fichero en la carpeta
informes. Se guardará con la extensión.xcfque guarda todos los elementos del proceso de edición de la imagen (capas, textos…). - Exporta el fichero a la carpeta
.secreta, con formato.jpg. Abre desde Nautilus, con el Visor de Imágenes, el nuevo fichero creado. Puedes comprobar que ya no es trasparente y (si no escogiste calidad 100%) que, al ampliarlo, se ven algunos defectos). - En el documento
informe-ubuntu.odtinserta el escudo de la universidad en la cabecera, con un tamaño más o menos adecuado. - Vuelve a exportar el documento a formato PDF a la carpeta
informes. - Carga el archivo
paises.odsde http://bellman.ciencias.uniovi.es/~carleos/master/manadine/curso1/TIplE/ejercicios/datos y explora las definiciones de referencias relativas y absolutas en http://bellman.ciencias.uniovi.es/~carleos/master/manadine/curso1/TIplE/apuntes/libreoffice-calc/practica1-217.odt. - Calcula el total mundial de población.
- Calcula la extensión de cada país en quilómetros cuadrados.
Abre una nueva hoja en
paises.odsy crea la siguiente tabla:tasa de I.V.A. = 16 % PRECIO sin I.V.A. PRECIO con I.V.A. 200 115 2200 30 - Crea fórmulas para calcular los precios con IVA, haciendo uso del valor almacenado en la celda con el 16. Cambia la tasa de 16 a 21, de forma que todos los precios con IVA se actualicen automáticamente.
- Calcula el P.I.B. percápita por país y el global.
- Calcula el consumo de calorías medio global.
2. Días 3 al 7: GNU bash y GNU coreutils
- Localiza dónde se encuentra el fichero llamado «sources.list» y muestra su contenido.
- Busca en
carleos2.epv.uniovi.estodos los ficheros.pdfdel directorio/tmp/ROK Crea en tu carpeta personal la siguiente estructura de directorios:
+-----+ | ~ | +-----+ | | +-------+ +------+ | | v v +---------+ +--------+ |Descargas| |Imágenes| +---------+ +--------+ | | | | V V V V +------+ +-----+ +---+ +---+ |libros| |pelis| |JPG| |PNG| +------+ +-----+ +---+ +---+- Consigue una serie de imágenes en formato JPG (por ejemplo, las de la final en Badajoz de la Incubadora de Sondeos y Experimentos) y colócalas en la carpeta «JPG».
- Mediante un bucle «for», conviértelas al formato PNG, de forma que los ficheros PNG resultantes
acaben en la carpeta «PNG». La orden para convertir
imagen.jpgenimagen.pngesconvert imagen.jpg imagen.png. - La orden
wcpermite contar renglones, palabras y caracteres de un fichero de texto. En la carpeta datos tienes un fichero llamadovacas.csv. Cuenta cuántos registros contiene ayudándote dewc. Luego carga el fichero en Libreoffice Calc y comprueba el resultado. En la misma carpeta está el fichero pisa2012.csv.gz. El sufijo
.gzindica que está comprimido. Puedes descomprimirlo con el comandogunzip pisa2012.csv.gz, con lo que se convierte en un fichero de texto normal y corriente.- ¿Cuántos registros contiene?
- ¿Cuántas variables? Ten en cuenta las órdenes
headytr; pueden ser útiles (considera las opciones-n 1paraheady-cy-dparatr).
Si no quieres descomprimir un fichero físicamente, sino sólo usarlo al vuelo, puedes usar
zcat. Por ejemplo:zcat pisa2012.csv.gz | wc
Compara los resultados de las siguientes órdenes e intenta averiguar la razón:
time zcat pisa2012.csv.gz | wc time zcat pisa2012.csv.gz | wc -l
Intenta averiguar qué hace esta orden:
zcat pisa2012.csv.gz | cut -d',' -f1 | uniq -c | sort -n
Ídem:
zcat piso2012.csv.gz | head -n 1 > /tmp/muestra.csv zcat piso2012.csv.gz | tail -n +2 | shuf -n 100 >> /tmp/muestra.csv
- Obtén un fichero
/tmp/muestra-es.csvque contenga los registros de PISA relacionados con España (CNT=ESP). Averigua qué hace esta instrucción explorando cada tubo:
cat /usr/share/common-licenses/GPL|tr ' ' '\n'|sort|uniq -c|sort -n
- Mete en el tubo una instrucción para convertir mayúsculas a minúsculas.
- Ídem para eliminar todos los símbolos que no sean letras minúsculas.
- Intenta hacer lo mismo con los ficheros
texto1…texto4sitos en bellman.ciencias.uniovi.es. Para quitar acentos, tendrás que meter en el tubo la ordeniconvórecode.
Obtengamos el código fuente de un paquete de Ubuntu, por ejemplo así:
apt-get source r-cran-rcmdr
Metámonos en el directorio con las fuentes:
ls -lrt cd rcmdr-2.0-3
¿Cuántos ficheros hay? ¿Cuántos son de código fuente R? ¿Cuántos renglones supone el código fuente de R? ¿Cuántas definiciones de funciones de R hay? Una definición debe contener algo como «
<- function (»- Obtén las frecuencias de los sexos en el fichero
vacas.csv, en la terminal y en R - Obtén los municipios más frecuentes en el fichero
vacas.csv, en la terminal y en R. Halla en qué se diferencian los ficheros
vacas.csvyvacas0.csvmediante el comandodiff(pista: se ha usadocat vacas.csv | sed 's/;;/;0;/g' | sed 's/;;/;0;/g' > vacas0.csv
para crear el fichero
vacas0.csv; ¿por qué se repetirá elsed?).A partir de la información de esta página y este directorio intenta averiguar qué hace esta orden:
for i in $(seq 1987 2008); do wget http://bellman.ciencias.uniovi.es/~carleos/master/manadine/curso1/TIplE/ejercicios/datos/vuelos/$i.csv.bz2; done
- En la misma carpeta que
vacas.csvestá el fichero vuelos.csv.gz. Su contenido está descrito en http://stat-computing.org/dataexpo/2009/the-data.html- ¿Cuántos registros contiene? (intenta hacerlo lo más rápido posible)
- ¿Cuántas variables?
- ¿Cuántos registros se refieren al aeropuerto internacional de la capital de Iowa? (Pista: halla el código de su aeropuerto.)
- Visita la página del I.N.E.
- Pincha a la izquierda en el menú de navegación.
- Pincha en "Productos y servicios".
- Pincha en "Información estadística".
- Pincha en "Ficheros de microdatos".
- Pincha en "Censos de población".
- Pincha en "Censos 2011".
- Pincha en "Ficheros de microdatos: Nacional".
- Guarda el archivo y descomprímelo.
- En el apartado "Personas y hogares", pincha en "diseño de registro y valores válidos de las variables".
- ¿Cuántas personas de cada sexo aparecen registradas?
3. Días 8 al 22: R
Ejecuta R en un terminal, crea una variable llamada
alturaque valga170y sal de R guardando el espacio de trabajo. Comprueba la naturaleza de los nuevos ficheros que aparecen en el directorio actual:ls -la # deben aparecer .Rhistory y .Rdata; file .* # .Rhistory debe identificarse como texto y .RData como un fichero comprimido; less .Rhistory # deben aparecer los comandos realizados; zcat .RData | less # no se ve gran cosa; se trata de un fichero binario; zcat .RData | strings # las cadenas contenidas en el fichero; zcat .RData | hexdump -C # el contenido del fichero octeto por octeto;
- Carga en R el fichero
vacas.csvmediante el comandoread.csv2o mediante Rcmdr > Datos > Importar > Texto. Llamaremosva la variable que contiene los datos. - Representa la variable
pesomediante un histograma. - Representa el
pesoen función delsexomediante cajas. - Halla la diferencia en media y mediana entre sexos.
- Representa gráficamente las frecuencias de los municipios.
(Ejecución por lotes) Prueba a usar R en un tubo de terminal:
echo '1-2*(1-pnorm(1.96))' | R --vanilla
Crea mediante un editor de textos un pequeño programa en R. Por ejemplo:
alfa <- 0.05 cuantil <- qnorm (1 - alfa/2) cat ("El cuantil gausiano bilateral asociado a alfa=", alfa, "es", cuantil, ".\n")
Llama al fichero
ejemplo.R. Entonces puedes ejecutarlo de alguna de estas maneras:cat ejemplo.R | R --vanilla R --vanilla < ejemplo.R # equivale a la anterior; R -e 'source("ejemplo.R")' # no hace eco de cada orden; R CMD BATCH ejemplo.R # la salida se guarda en ejemplo.Rout
- Sea
xel número de incidencias semanales registrados en cierto control. Los valores dexobtenidos hasta ahora son:x <- c (3, 7, 5, 9, 12, 3, 14, 2).- ¿Cómo seleccionar el primer valor de
x? - ¿Cómo seleccionar el tercero?
- ¿Cómo obtener un vector que contenga los dos primeros valores?
- ¿Cómo obtener un vector que contenga todos los valores menos el tercero?
- ¿Qué posiciones ocupan los valores menores que 10? (Pista:
which). - ¿Cómo obtener un vector que contenga los valores menores que diez?
- Sustituye los elementos de
xmenores que diez por un cero.
- ¿Cómo seleccionar el primer valor de
Crea un vector llamado
precipitacionen R y que contenga los siguientes datos (pulgadas anuales de precipitación sobre Mineápolis - San Pablo):0'77 1'74 0'81 1'20 1'95 1'20 0'47 1'43 3'37 2'20 3'00 3'09 1'51 2'10 0'52 1'62 1'31 0'32 0'59 0'81 2'81 1'87 1'18 1'35 4'75 2'48 0'96 1'89 0'90 2'05 - Trasforma
precipitacionpara que esté expresado en milímetros (litros por metro cuadrado). - Halla la media, mediana, desviación típica y recorrido intercuartílico de
precipitacion. - Ídem de los veinte últimos años.
- Ídem de todos los años salvo el antepenúltimo.
- Ídem de todos los años secos (un año es seco si llueve menos de cincuenta milímetros).
Halla la media, mediana, desviación típica y recorrido intercuartílico de la variable número de hijos:
número de hijos 0 1 2 3 4 5 6 7 número de familias 259 486 329 49 40 3 0 1 (Aparte: puedes usar
scan()para importar en R cómodamente datos separados por espacios (por ejemplo, al copiarlos desde HTML ó PDF y pegarlos en el terminal.)Crea un dataframe que contenga sólo las variables número de hijos y número de coches, pero que represente a la muestra completa:
número de hijos 0 0 1 1 1 2 2 2 número de coches 0 1 2 0 1 0 1 2 número de familias 18 31 14 3 10 9 5 21 En un experimento se examinó el efecto de la densidad plantar sobre la producción de tomate. Se plantaron tres variedades de tomate a cuatro diferentes densidades. Cada combinación se replicó tres veces. He aquí los resultados:
Densidad Variedad 1 Variedad 2 Variedad 3 1 9'2 12'4 5'0 8'9 9'2 6'0 16'3 15'2 9'4 2 12'4 14'5 8'6 12'7 14'0 12'3 18'2 18'0 16'9 3 12'9 16'4 12'1 14'6 16'0 14'7 20'8 20'6 18'7 4 10'9 14'3 9'2 12'6 13'0 13'0 18'3 16'0 13'0 Creamos la tabla de producciones así:
prod <- c ( 9.2, 12.4, 5.0, 8.9, 9.2, 6.0, 16.3, 15.2, 9.4, 12.4, 14.5, 8.6, 12.7, 14.0, 12.3, 18.2, 18.0, 16.9, 12.9, 16.4, 12.1, 14.6, 16.0, 14.7, 20.8, 20.6, 18.7, 10.9, 14.3, 9.2, 12.6, 13.0, 13.0, 18.3, 16.0, 13.0)¿Cómo usarías
reppara crear vectores que representen la variedad y la densidad?(Pista:
rep(1:nd,rep(nr*nv,nd)),rep(1:nd,each=nr*nv);rep(rep(1:nv,rep(nr,nv)),nd),rep(1:nv,each=nr,nd))- Halla medias y desviaciones típicas de las
prodasociadas a la variedad 1. - Halla medianas y recorridos intercuartílicos de las
prodasociadas a la variedad 2 y a la densidad 3. - Crea una matriz con los datos de
prod, densidad y variedad, por columnas. - De la anterior matriz, crea una submatriz que contenga sólo las filas asociadas a la variedad 2 y a la densidad 3.
- De la anterior matriz, crea una submatriz columna que contenga sólo
la densidad. (Pista: explora la opción
dropde[, o bien explora la ordenmatrix.) - Haz un histograma de
precipitacion. - Mete el histograma en una variable y analiza sus componentes mediante
names,str,ls.str,as.list… - Haz un gráfico de cajas de
precipitacion. - Haz un gráfico que represente la secuencia temporal de
precipitacion. - Haz un gráfico de barras de
x <- rbinom (200, 10, .7). Que aparezca la frecuencia sobre cada barra. - Haz un gráfico de la función \(f(x)=2x+x^2\) entre \(-2\) y \(3\).
- Representa
proden función dedensidadcon un gráfico de dispersión (plot) y un gráfico de cajas (boxplot). - Realiza una regresión simple (
lm) de laproden función dedensidad. - Representa gráficamente (
abline) la recta de regresión junto a los puntos. - Genera un vector que contenga el \(R^2\) múltiple de la regresión y el p-valor asociado a la ordenada del origen.
- Realiza una regresión múltiple para ajustar una parábola a esos puntos. Consulta el capítulo 11 de Introducción a R para el modelo de la fórmula.
- Representa la parábola (
seq,lines) junto a la nube de puntos. - Representa gráficamente la relación entre
alzadaypesopara lasvacas.csv. - Realiza una regresión lineal y otra parabólica de
pesofrente aalzaday representa las curvas ajustadas junto a la nube de puntos. - Guarda la representación anterior como
pngy comopdf. - Crea una lista que contenga las siguientes componentes con estas etiquetas:
- R2
- coeficiente de determinación del ajuste cuadrático
- beta0
- ordenada en el origen
- sigbeta0
- p-valor asociado a \(\beta_0\)
- peso100
- predicción de
pesocuandoalzadavale 100 (ajuste parabólico)
- Calcula la edad de cada animal usando
substr. - Calcula la edad de cada animal usando
as.Date. - Definir una función
asimque calcule el coeficiente de asimetría de Físher. - Hallar una función en R que calcule el coeficiente de asimetría de Físher.
- Definir una función en R que
- dibuje un histograma a partir de un vector numérico dado como primer argumento
- admita un segundo argumento opcional, el color del histograma (por omisión, rojo)
- admita un tercer argumento opcional, el número de barras (por omisión, diez); hay que forzar que el histograma tenga exactamente el número de barras pedido
- cada barra debe mostrar por encima el porcentaje de observaciones que representa
- Representa el
pesoen función de laedadcon un gráfico. Añádele una recta de regresión. Guarda el gráfico como PNG y como PDF. - Ídem, pero realiza un gráfico por cada año.
- Fíjate en los datos
mtcars. Convierte las variablesmgp,disp,wten unidades métricas. - Haz un análisis descriptivo de cada variable.
- Haz un análisis del consumo en función de
am. - Haz un análisis del consumo en función de
amyvscombinados. - Haz un análisis del consumo en función de
wt,dispycyl. - Por cada nivel de
cyl, haz un gráfico del consumo respecto al peso, que incluya una recta y una parábola de regresión. - Crea un dataframe con las mismas variables que
mtcarspero donde todas las variables estén tipificadas (con media 0 y desviación típica 1). - Ídem con mediana 0 y recorrido intercuartílico 1.
Por cada país de PISA, crea un gráfico
pngy otropdfque contenga:- un histograma de
PERSEV - un histograma de
OPENPS - la nube de puntos entre ambas variables
Puedes generar los nombres de los ficheros usando
pasteopaste0.- un histograma de
- Por cada país de PISA, crea un dataframe con sus datos y guárdalo mediante
saveen un fichero.rday mediantewrite.tableen un fichero.csv. - Por cada año y cada aeropuerto
fromdevuelos.csv, haz un gráfico de barras con los diez aeropuertostomás frecuentes. A partir de
mtcars, obtén un dataframe que contenga los coches que- pesen más de 1.500 quilos y
- consuman más de 15 litros por cada cien quilómetros
o bien
- su nombre empiece por
Tpero no contengaCorolla
(Pistas:
rownames,substr,grep.)- Halla la desviación media de las variables de
mtcarsque sean cuantitativas continuas (digamos que tienen más de cuatro categorías). - Halla la desviación media de las variables de
vacas.csvque sean cuantitativas continuas (digamos que tienen más de cuatro categorías) condicionando a los datos de los últimos siete años. El resultado ha de ser en todo caso númerico (noNA). - Carga los datos de
paises.odsen R, habiéndolos exportado en LibreOffice apaises.csvdejando las opciones por omisión. - Basándote en
mtcars, crea un dataframe llamadomtcochesdonde- El consumo venga en litros por 100 km.
- El peso venga en toneladas métricas.
- El cubicaje venga en centímetros cúbicos.
- Las variables
vsyamsean factores con etiquetas adecuadas.
- Guarda ese dataframe en un fichero en formato binario (
.rda):save - Sal de R sin guardar el entorno (por ejemplo, con
q("no")), vuelve a entrar y recuperamtcochesa partir del fichero:load - Guarda ese dataframe en un fichero
.csv:write.table,write.csv,write.csv2 - Sal de R sin guardar el entorno (por ejemplo, con
q("no")), revisa el contenido del fichero.csv, vuelve a entrar en R y recuperamtcochesa partir del fichero. - Crea un modelo lineal (llámalo
l) que prediga el consumo a partir del peso y del cubicaje. - Añade a
mtcochesuna columna con el consumo predicho porl. - Calcula el error cuadrático medio de dicha predicción.
Para calcular el coeficiente de determinación en tanto por cien, he probado
100 * summary (l) ["r.squared"]pero me da error. ¿Por qué?
- Vamos a asignar a cada coche una supuesta fecha de fabricación, aleatoria.
Añade a
mtcochesuna columna con fechas aleatorias desde el 1 de enero de 1970 al 31 de diciembre de 1979. - Añade otra columna con el día de la semana correspondiente a cada
fecha:
weekdays - Construye otra columna llamada
hpuañadiendo a la variable potencia un ruido aleatorio con distribución uniforme entre \(-1\) y \(+1\). - Construye otra columna
hpgañadiendo a la variable potencia un ruido aleatorio con distribución gausiana con media \(0\) y desviación típica \(5\). - Genera una muestra de 10.000 valores gausianos con media 1'7 y desviación típica 0'05. Representa un histograma de dicha muestra y añádele una curva de densidad gausiana con los parámetros dichos.
El bucle
for (i in iris) print (summary (i))
escribe los resúmenes descriptivos de cada variable, pero no sus nombres. Modifícalo para que ponga el nombre de cada variable antes del resumen.
- Genera una matriz que contenga la tabla de multiplicar.
- Echa un vistazo al fichero
/var/log/dpkg.log. Cárgalo en R (read.csv, …). Al principio de cada renglón está la hora de cada registro. Crea un vector con las horas mediantestrptime1 y calcula su desviación típica y su recorrido. - Obtén los minutos de cada registro del vector anterior:
unclass - Definir una función que, dados los coeficientes «a,b,c» de una ecuación de segundo grado (\(a x^2 + b x + c = 0\)), devuelva sus raíces reales (sin parte imaginaria), en caso de haberlas.
- Sea \(f\) la función de densidad de una distribución triangular
simétrica tal que los extremos del soporte sean \(-a\) y \(a\).
- Definir en R la función
fque calcule dicha densidad en un puntoxdado como argumento. Por omisión, usara=2. - Comprobar si
fpuede aplicarse a vectores, por ejemplo,f(0:5). Si no, crear una versiónfvvectorizada def.
- Definir en R la función
- Ídem pero devolviendo siempre dos soluciones complejas.
Se define el fectorial del entero \(z\in\mathbf{Z}\) como \[ \mathcal F(z) = \prod_{i=z}^{-1}\,i %= i\cdot(i+1)\cdots(-2)\cdot(-1) \] o bien, recursivamente, como \[ \mathcal F(-1) = -1\qquad \mathcal F(z) = z\cdot\mathcal F(z') \] donde \(z'=z+1\) si \(z<-1\) y \(z'=z-1\) si \(z>-1\).
Escribe una función en R que calcule el fectorial de su argumento.
Dibujar la función de densidad de una distribución ji-cuadrado de 5 grados de libertad.
Sombrear las dos colas del 5% de probabilidad cada una, es decir, del 0 al percentil 5 y del percentil 95 hasta «infinito».
Hacer un diagrama de dispersión de la longitud de pétalo frente a la longitud de sépalo, con los datos del dataframe «iris» (si no estuviera, ejecutar «library(datasets);data(iris)»).
Que la
setosaaparezcan de color rojo; lasversicolor, de color azul; y lasvirginica, de verde.- Definir una variable «m» que contenga en la celda «i;j» el valor de «i» \(\times\) «j».
- Definir una variable «m» que contenga por ejemplo en la celda «3;5» una cadena con el texto "3 × 5 = 15".
- Definir una variable «d» que sea un dataframe de 1000 filas y que
- la primera columna sean valores aleatorios de una uniforme U(0;1)
- la segunda, aleatorios gausianos N(170;15)
- la tercera, aleatorios exponenciales de esperanza 5
- la cuarta, aleatorios puasones de esperanza 20
- la quinta, letras aleatorias del alfabeto inglés (variable «letters») con la misma probabilidad
- la sexta, vocales (a, e, i, o, u) aleatorias donde la «u» tenga el doble de probabilidad que cada una de las otras
- Obtener sendos vectores de nombres de variables cuantitativas y cualitativas de «d».
- Definir una lista «l» de longitud 6 tal que su elemento «i»-ésimo sea el resultado de aplicar «summary» a la «i»-ésima variable de «d».
- Añadir nombres a la lista del ejercicio anterior para identificar cada sumario con su variable.
- Considerar los datos «mtcars». Obtener una lista que contenga por la media y desviación típica de «mpg» por cada valor de «cyl».
- Generar 10.000 valores de medias muestrales de muestras de tamaño 100 de una población gausiana N(170;15). Calcular la desviación típica de las medias muestrales.
- Definir una función que indique si su argumento es un número primo. Usarla para hallar los primos menores que 1000.
- Cargar en R todos los datos disponibles en
la carpeta datos, a saber:
- mtcoches
- paises
- pisa2012
- vacas
- vuelos http://stat-computing.org/dataexpo/2009/the-data.html
en nuestros ordenadores seri'a imposible cargar los datos de vuelos completos;
lo haremos a trozos, procesa'ndolos segu'n un objetivo concreto;
por ejemplo,
- mostrar distribución de vuelos por meses (Month)
- mostrar distribución de tiempos de retraso en llegadas (ArrDelay)
4. Día 23: SED, AWK, …
- Del fichero
vacas.txt, modifica las fechas para que aparezcan en formato yanqui mes-día-año. - Del fichero
vacas.txt, halla con AWK la desviación típica de las alzadas. - Intenta cargar en R el fichero
vacas.txt. Investiga qué ocurre mediante AWK e intenta corregirlo. Crea un fichero
listado.txta partir de la salida del comando de Bash siguiente:find /usr/share/doc -ls
La columna segunda contiene la cantidad de bloques ocupados en KiB (quibioctetos).
La columna sétima contiene el tamaño de los ficheros en octetos.
Mediante
cut, obtén un ficherooctetos.txtque contenga sólo las dos columnas mencionadas arriba.Si no están bien alineadas las columnas en el fichero original, prueba a entubarlo a través del comando
column -t- Haz lo mismo que en el anterior, pero mediante
awk. - Mediante
awk, obtén la media y la desviación típica de cada columna. - Obtén el máximo de cada columna.
- Mediante
awk, obtén un ficherooctetos+.txtque contenga, además, una columna con la diferencia entre octetos ocupados y octetos reales. - Trasforma en Perl mediante
a2pel último programa AWK: Compáralo con este programa en Python:
import fileinput,string for renglon in fileinput.input(): campos = renglon.split() print campos[0], campos[1], \ string.atoi(campos[0])*1024 - string.atoi(campos[1])
Compáralo con este programa en Lisp
(defun dividir (cadena) (let ((s (make-string-input-stream cadena))) (loop for campo = (read s nil) while campo collect campo))) (loop for renglon = (read-line *standard-input* nil) while renglon do (let ((campos (dividir renglon))) (format t "~@{~a ~}~%" (car campos) (cadr campos) (- (* 1024 (car campos)) (cadr campos)))))
Notas al pie de página:
Quizá tengas que usar también Sys.setlocale("LC_TIME", "C")
porque el nombre de los meses en syslog está en inglés y puede que la configuración
de idioma (locale) de tu ordenador esté en español u otro idioma.