[RESUELTO]scripts en puppy

Post Reply
Message
Author
arivas_2005
Posts: 212
Joined: Sun 25 Feb 2007, 14:39

[RESUELTO]scripts en puppy

#1 Post by arivas_2005 »

Saludos.

Aunque la consulta no es directamente de puppy, ojala me puedan ayudar

Estoy intentando construir un pequeño script para buscar palabras exactas dentro de frases.

googliando, logré organizar esto:

#! /bin/bash

Unix[0]="Sistemas operativos libres"
Unix[1]="Sistematizaciones generales"
Unix[2]="Sistema operacional"
Unix[3]="operaciones sistemicas"

CONTADOR=0
MAX=4

while [ $CONTADOR -lt $MAX ]; do
echo $CONTADOR
echo `expr index "${Unix[CONTADOR]}" "ciones"`
echo `expr match "${Unix[CONTADOR]}" "temas"`
echo =======================
let CONTADOR=CONTADOR+1
done

pero no logro que mi indique la posición exacta de la parte "ciones" o "temas" para cada una de las 4 frases

Ciertamente me salen algunas posiciones, pero no coinciden con el inicio de la partícula exacta, sino de una de las letras de la partícula.

Necesito ubicar partículas exactas dentro de las frases.

Cómo podría lograr que para que me ubique "ciones" en la posición 12 en la segunda frase y en la posicion 6 en la cuarta frase.
Por igual, que me ubique "temas" en la posicion 4 de la primera frase, ya que las otras tres no la tienen completa.

Ojala puedan ayudarme.

Sé que hay un subforo programming dentro de éste forum pero no se ingles.
Uso puppy slacko 5.4
Last edited by arivas_2005 on Fri 29 Mar 2013, 02:07, edited 1 time in total.

User avatar
GustavoYz
Posts: 883
Joined: Wed 07 Jul 2010, 05:11
Location: .ar

#2 Post by GustavoYz »

Hola, yo usaría awk (sí y solo sí no puedo usar Perl :D ):

Code: Select all

#! /bin/bash 
 Unix[0]="Sistemas operativos libres" 
 Unix[1]="Sistematizaciones generales" 
 Unix[2]="Sistema operacional" 
 Unix[3]="operaciones sistemicas" 
 CONTADOR=0 
 MAX=4 
 while [ $CONTADOR -lt $MAX ]; do 
 echo "iteracion nro.: ->" $CONTADOR 
 #echo `expr index "${Unix[CONTADOR]}" "ciones"` 
 echo "ciones: ->" $(awk -v a="${Unix[CONTADOR]}" -v b="ciones" 'BEGIN{print index(a,b)}')
 echo "temas: ->" $(awk -v a="${Unix[CONTADOR]}" -v b="tema" 'BEGIN{print index(a,b)}')
 echo ======================= 
 let CONTADOR=CONTADOR+1 
 done
la salida:

Code: Select all

bash asd.sh
iteracion nro.: -> 0
ciones: -> 0
temas: -> 4
=======================
iteracion nro.: -> 1
ciones: -> 12
temas: -> 4
=======================
iteracion nro.: -> 2
ciones: -> 0
temas: -> 4
=======================
iteracion nro.: -> 3
ciones: -> 6
temas: -> 0
=======================
Sin embargo se puede hacer de muchas otras formas. Con grep alcanza con las opciones -b y -o.

arivas_2005
Posts: 212
Joined: Sun 25 Feb 2007, 14:39

#3 Post by arivas_2005 »

Gracias GustavoYz

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Utiliza sed

#4 Post by mister_electronico »

El comando sed es un comando impresionante y muy bueno para localizar palabras, frase y mas, y te ahorra muchismio trabajo.

Este post puede ser interesante para que mas gente se anime a poner scripts, un tema que seria muy interesante.

Saludos.

User avatar
GustavoYz
Posts: 883
Joined: Wed 07 Jul 2010, 05:11
Location: .ar

#5 Post by GustavoYz »

@mister_electronico: Porqué no comenzar uno nuevo? :D
Sería bueno tener aunque sea un hilo sobre programación en Bash/sh en español, ya que como quedó dicho arriba, lo que hay suele estar en inglés.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Pues si la verdad es que seria mejor abrir uno nuevo

#6 Post by mister_electronico »

Si seria mejor abrir uno nuevo, de esta forma se podria hacer mas ordenadamente.

La verdad es que en internet hay infinidad de sitios con informacion de script pero, de esta forma se podrian poner script que este comprobado que funcionan en Puppy y que estan testeados.

Asi como si hace falta alguno enlace a algun comando en concreto, poder poner el enlace aqui.

Aqui en el foro de Puppy se han puesto script bastante buenos, se podrian reunir para empezar todos en el post que se haga nuevo.

Saludos.

Post Reply