BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

duda spript linux

eskizoatm

Hola,

necesito hacer un script en linux y me surge una duda. se que había una forma para coger de una "tabla" los elementos iesimos.

me explico, por ejemplo al ejecutar un ls -l te aparece en pantalla

permisos nombre_usuario tamaño fecha nombre_archivo..

entonces yo querría por ejemplo quedarme solo con los elementos de la quinta columna (en el caso de ls -l tamaño) para trabajar con dichos datos

BocaDePez

Sí, el comando necesario es "cut".

Si lees su man verás que tienes que definir cuál es el separador de los campos para que sea capaz de interpretar dónde empieza cada uno. Eso varía en cada texto de entrada, así que es una cosa que necesitas averiguar tú previamente... en unos casos son espacios, en otros tabuladores, en otros guiones, etc.

eskizoatm

eso es exactamente lo que estaba buscando, muchas gracias por la respuesta tan rápida, tengo que hacer bastantes cosas parecidas y tengo los comandos linux bastante oxidados asi que seguramente me vuelva a pasar por aqui :)

eskizoatm

bueno, sigo con las dudas :S

ahora tengo que operar con esos numeros, pero no se como hacerlo. al hacer cut -f 8 archivo me sale un listado:

563

234

3221

2345

...

ahora tendría que operar con dichos numeros, es decir, ir leyendo línea a línea y por ejemplo ir calculando la suma, el máximo, el mínimo,... he empezado por mandar esos datos a un fichero temporal, pero me temo que no se leer línea a línea los datos de un fichero

🗨️ 1
BocaDePez

Yo no soy un experto en batch scripting, hubiese empezado por hacer un programa en C, hahaha...

Pero mira por donde, mejor buscar con Google (y mejor en inglés, que hay mi resultados mas) y encontrarte con maravillas del estilo:

awk '{ sum += $1 } END { print sum }' file

BocaDePez

muchas gracias por tu respuesta, la verdad es que es eso exactamente lo que buscaba, a raíz de ahí he podido calcular la media y el máximo de una serie de elementos en un fichero. mi sorpresa fue que cuando fui a calcular el mínimo de manera similar al máximo no me lo hace!!

# calcula el maximo de todos los elementos en temporal

awk '{ if($1>max) max=$1 } END { print max }' temporal.txt;

# calcula el minimo de todos los elementos en temporal

awk '{ if($1

el valor min lo inicializo inicialmente a un valor que se que es superior a cualquiera en temporal y esto no me devuelve nada, el print min me lo deja en blanco, como si fuera basura... alguna idea?