Linux/Unix Shell Scripting - Seleccionar todas las palabras que empiecen por i y tengan 5 letras

   
Vista:
Imágen de perfil de Xamiend

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Xamiend (7 intervenciones) el 30/12/2014 01:12:33
Verán, la intención es la siguiente:
He creado un archivo llamado dict en el que he copiado todo el contenido de /usr/share/dict/words (sólo por comodidad)

Lo que quiero hacer es acceder a ese archivo, seleccionar todas las palabras que empiecen por " i " y tengan cuatro letras más (i????) y guardarlas en un archivo que se llame "palabras"

Muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Tom (253 intervenciones) el 30/12/2014 18:11:28
¿ Qué formato tiene ese archivo ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xamiend

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Xamiend (7 intervenciones) el 30/12/2014 22:52:25
Pues no lo sé. Al ver el tipo de archivo con ls me pone un guioncito como con todos los archivos.
Para crearlo hice
$cat /usr/share/dict/words > words
intuyo que es un archivo de texto, .txt no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Tom (253 intervenciones) el 31/12/2014 16:17:28
Me refería al formato interno ome! :D
Bueno, es un fichero que contiene una palabra en cada línea. Yo no lo tengo pero una idea parecida a la de xve debería funcionar:

1
grep -w "^i...." /usr/share/dict/words
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xamiend

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Xamiend (7 intervenciones) el 01/01/2015 18:09:41
Haciendo eso me devuelve todas las palabras que empiecen por "i" con cinco letras o más.
He estado probando un poco usando grep y cambiando las opciones y los argumentos pero consigo el mismo resultado jajaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Tom (253 intervenciones) el 02/01/2015 12:14:46
Bueno, eso devuelve palabras de 5 letras. Punto. Lo que ocurre es que también devuelve palabras compuestas si la primera parte tiene 5 letras. Pero se arregla con facilidad:

grep -w '^i....$' /usr/share/dict/words
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xamiend

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Xamiend (7 intervenciones) el 02/01/2015 21:01:22
Ah vale! Ya lo vi. El primero me devolvía todas las palabras con cinco letras, pero además las que tenían cinco letras y esa quinta era una letra especial (como una vocal con tilde o una ñ).
Lo último lo he probado y funciona a la perfección. Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por xve (254 intervenciones) el 30/12/2014 20:42:46
Hola Xamiend, seria algo así:

1
grep '\<i....\>' words

Te devolver todas los que empiecen por la letra "i" y tengan 4 caracteres mas.

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xamiend

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Xamiend (7 intervenciones) el 30/12/2014 22:50:15
Hice lo que me dijiste y añadí una redirección para crear un archivo y poder ver bien el output, y las palabras no coincidían con el criterio :c
Muchas gracias por responder de todos modos :3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por xve (254 intervenciones) el 31/12/2014 09:09:53
tienes razón Xamiend, lo que hace es que te los corta las palabras a 5 caracteres... perdón, no me di cuenta...

Haber si te sirve este script:
1
2
3
4
5
6
7
8
9
10
#!/bin/sh
 
lista=`grep ^i words`
 
for palabra in $lista
do
	if [ ${#palabra} -eq 5 ];then
		echo $palabra
	fi
done

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xamiend

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Xamiend (7 intervenciones) el 01/01/2015 18:10:34
Perdona mi ignorancia, pero ¿cómo podría ejecutar ese script? Todavía no he leído demasiado sobre aplicar scripts en linux, llevo apenas unos días jajajaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por xve (254 intervenciones) el 01/01/2015 19:23:17
por ejemplo si guardas el archivo con el nombre miscript.sh para ejecutarlo:
1
sh miscript.sh

o dándole privilegios de ejecución:
1
2
chmod a+x miscript.sh
./miscript.sh

Ya nos comentaras si te funciona, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xamiend

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Xamiend (7 intervenciones) el 02/01/2015 21:11:39
Vale, me puse a leer un poco sobre scripts y ahora más o menos veo lo que son.
Tu script me funcionó correctamente.

El único problema es el siguiente. Probé ambos métodos, el que me dio Tom y el tuyo, y ambos me funcionaron.
Para comprobar el resultado, guardé el output de cada resultado en archivos distintos, para luego contar las palabras
El output del comando que me dio Tom lo guardé en un archivo que se llama "iwords", y el output de tu script lo guardé en un archivo que se llama "iwords2"
Luego conté el número de elementos que contenía cada archivo haciendo lo siguiente:
less iwords | wc -l
less iwords2 | wc -l


En el primero, iwords tiene 38 elementos, mientras que iwords2 tiene 36. ¿A qué se puede deber?
Muchas gracias por su ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar todas las palabras que empiecen por i y tengan 5 letras

Publicado por Tom (253 intervenciones) el 07/01/2015 14:53:59
$ diff iwords iwords2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar