Hola, ante todo muchas gracias por adelantado por la ayuda en este delirante tema.
El problema es el siguiente, en un archivo, llamemos lo archivo.txt, tengo:
/esto/es/una/ruta
9
78
34
esto/es/otra/ruta
esto/sigue/siendo/otra/ruta
4
33
Hasta aqui bien, ahora, queriendo recorrer el archivo, (supongo que no es nada del otro mundo para los que sabeis), lo que quiero hacer es separar las cadenas de texto, de los numeros, para realizar una operacion u otra (con un if then else fi creo que es suficiente).
Es posible hacerlo? y si no, que me recomendais?
Con egrep podría valer
Una posible solución es utilizar egrep para ver si la cadena cumple con un determinado patrón (en este caso solo números):
Ejecutandolo con cadena=14323245 mostrará el mensaje "son solo numeros", mientras que si se ejecuta con cadena=2345231kjsdafsadf23545 mostrará el mensaje "hay otros caracteres que no son números".
Muchas gracias! Lo añadire a
Muchas gracias! Lo añadire a ver que tal se porta :D
while read line do g=`echo
while read line
do
g=`echo $line | sed '/^$/d' |sed '/^\//d'`
characters=`echo $line | awk -F"/" '{ print $(NF) }'`
if [ -z $g ]
then
sudo svn blame $line > $(pwd)/errors/$characters.check
archiv=$(pwd)/errors/$characters.check
echo "$line" >> $(pwd)/errors/$characters.check
#echo $characters
else
cat $archiv | head -n $line | tail -n 1 >> $(pwd)/errors/check.txt
pln=`echo $(pwd)/errors/Client_checkstyle_errors.xml | grep -n "$archiv"`
cln=`echo $(pwd)/errors/Client_checkstyle_errors.xml | awk 'NR==$pln"+"1'`
nln=`echo $cln | awk -F"message=\"" '{ print $2 }'`
jln=`echo $nln | awk -F"\"" '{ print $1 }'`
echo $jln >> $(pwd)/errors/check.txt
#echo number
fi
done < $(pwd)/errors/clean_final.data
Recorriendo cadenas
#!/bin/bash
# Crea un script con los datos del ejemplo y guardalo con el nombre de datos
# Guarda este comentario con el nombre de Datos.sh
# chmod 755 Datos.sh
# Ejecuta Datos.sh, comprueba las lineas y separa las que contienen números de
# las que contienen letras
# Leer todas las lineas
for linea in `cat datos`
do
# En cada linea elimina los números
# Si la ruta contiene también números puede conducir a error
# dependiendo de si esa ruta se usa para algo dado que los
# números se eliminaran, convendria que salvaras la ruta original
# en alguna variable
ValorDeLaLinea=`echo $linea | tr -d [:digit:]`
if [ ${#ValorDeLaLinea} -ne 0 ]; then
echo "Letras: $linea" # esta linea es de letras
else
echo "Números: $linea" # esta linea tiene números
fi
done
echo -n "Pulsa enter para salir . . ." && read