seq puede crear secuencias numericas crecientes y decrecientes con diferentes intervalos, la forma mas simple seria:
seq 5
1
2
3
4
5
si queremos la secuencia decreciente
seq 5 1
5
4
3
2
1
si queremos rellenos con ceros
seq -w 5 1
5
4
3
2
1
¡no pasó nada! -- noo, si pasa, pero aqui no hay ceros que rellenar, prueba
seq -w 10 1
o
seq -w 100 1 ó tambien seq -w 100
y aqui el último numero de la secuencia será 001
ahora los intervalos...
los intervalos standard son de unidad. Si queremos intervalos diferentes tenemos que definir el inicio, intervalo y fin, asi:
seq 1 0.5 10
o decreciente con
seq 10 0.5 1
aha! aqui seq no hace nada y nos dice:
seq: needs negative decrement
que es absolutamente lógico pues le estamos pidiendo a seq que nos haga una secuencia decremental, y seq sólo suma el intervalo, por lo que tenemos que darle a seq un intervalo negativo, asi
seq 10 -0.5 1 si nos funcionará
las opciones -s y -t tambien nos pueden ser muy útiles
seq -s , -t ENDSEQ 10 -0.5 1
10,9.5,9,8.5,8,7.5,7,6.5,6,5.5,5,4.5,4,3.5,3,2.5,2,1.5,1,ENDSEQ
lo que podria servir por ejemplo para rellenar matrices o crear sucesiones.
Y para terminar aun nos queda la opcion -f o "format" que va a definir si los números se presentarán como estandard (%g), exponencial o notacion cientifica(%e), o con punto decimal y 6 posiciones decimales(%f)
prueba seq -f %g con %e y f% y veras estos formatos mas claramente, pero la fuerza de -f no radica exactamente en estos 3 formatos, sino en los formatos adicionales que se pueden crear a traves de estos. Y es que -f tambien puede ser "archivo%02g.txt" o "logfile.%03g" asi
~\> seq -f "logfile.%03g" 5
logfile.001
logfile.002
logfile.003
logfile.004
logfile.005
con lo que podemos usar seq para crear archivos por ejemplo asi:
touch $(seq -f "logfile.%03g" 5)
o para borrarlos, o crear directorios, etc.
SECUENCIAS CON JOT
SECUENCIAS CON ECHO
echo {1..9}
1 2 3 4 5 6 7 8 9
echo {5..1}
5 4 3 2 1
en este sentido es echo un poco mas poderoso que seq y jot ya que estas secuencias pueden ser tambien alfabeticas, como
echo {a..z}
echo {A..Z}
y reversas:
echo {z..a} a asi...
pero estas secuencias estaran siempre en la misma linea (a no ser que se acabe la pantalla entonces salta a la siguiente linea), y si quisieramos que los numeros esten uno bajo el otro necesitaremos a xargs asi
echo {1..10} | xargs -n1
cosa que podria parecer molesta depender de un segundo comando para esta opcion, aunque si lo miramos asi
echo {1..9} | xargs -n3
echo {a..y} | xargs -n5
tenemos como resultado unas bonitas matrices
pero la salida de { .. } la podemos utilizar en Unix de muchas otras maneras mas alla de echo, ya que echo es solo un repetidor que saca cosas por la salida estandar stdout o por otra dirigida con direccionamientos > o pipes
asi podemos directamente crear el efecto de arriba en ~\> seq -f "logfile.%03g" 5
con:
touch logfile.00{1..5}
crear directorios:
md directorio_{a..z} ó sino tambien md {a..z}_directorio
con XARGS podemos
cambiar derechos de grupos de usuarios en todas las carpetas dentro del directorio listado:
o lo que seria aún mejor, cambiar los derechos de sólo algunos directorios que cumplan con alguna condición como los que comienzen con "a"
ls a* | xargs sudo chgrp wheel
o filtrarlo con find:
find d* -*k-z
No hay comentarios:
Publicar un comentario