Script con cut [Solucionado]
Hola a todos, estoy creando un script para sacar datos de un fichero, lo estoy haciendo con el comando "cut". He leido la guia pero sigo sin poder sacar lo que quiero.
Tengo un fichero con este formato:
<channel id="dgplus0.sp">1:0:1:76c0:40e:1:c00000:0:0:0:</channel> <!-- CANAL+ -->
<channel id="dgplus1.sp">1:0:1:76ca:40e:1:c00000:0:0:0:</channel> <!-- CANAL+ DOS -->
<channel id="dgplus2.sp">1:0:1:7479:3f0:1:c00000:0:0:0:</channel> <!-- CANAL+ ...30 -->
<channel id="dgplus3.sp">1:0:1:7472:3f0:1:c00000:0:0:0:</channel> <!-- C+ ACCIÓN -->
<channel id="dgplus4.sp">1:0:1:7473:3f0:1:c00000:0:0:0:</channel> <!-- C+ COMEDIA -->
<channel id="dgplus5.sp">1:0:1:7474:3f0:1:c00000:0:0:0:</channel> <!-- C+ DCINE -->
<channel id="dgplus7.sp">1:0:1:779c:424:1:c00000:0:0:0:</channel> <!-- C+ FÚTBOL -->
<channel id="dgplus8.sp">1:0:1:779d:424:1:c00000:0:0:0:</channel> <!-- C+ DEPORTES -->
<channel id="dgplus12.sp">1:0:1:77c0:40a:1:c00000:0:0:0:</channel> <!-- TVE 1 -->
<channel id="dgplus13.sp">1:0:1:77c2:40a:1:c00000:0:0:0:</channel> <!-- LA 2 -->Lo que quiero es guardar en variables estos trozos (primera linea):
dgplus0.sp
76c0
CANAL+
He creado un script que me lo va haciendo pero me falta quitar los ultimos caracteres, y no se como hacerlo:
#!/bin/bash
while read A;
do
# Guarda el ID de XML
xmlid=`echo $A | cut -f1 -d ":" | cut -f2 -d "=" | cut -f1 -d ">" | cut -c 2-`
echo $xmlid
# Guarda el nombre del canal
canal=`echo $A | cut -f2 -d "!" | cut -c 3-`
echo $canal
# Guarda el SID en hexadeciml
sid_hex=`echo $A | cut -f4 -d ":"`
echo " "
done < $1
Con esto me sale esto:
$ ./hex2.sh file_canales.txt
dgplus0.sp"
CANAL+ -->
dgplus1.sp"
CANAL+ DOS -->
dgplus2.sp"
CANAL+ ...30 -->
dgplus3.sp"
C+ ACCIÓN -->
dgplus4.sp"
C+ COMEDIA -->
dgplus5.sp"
C+ DCINE -->
dgplus7.sp"
C+ FÚTBOL -->
dgplus8.sp"
C+ DEPORTES -->
dgplus12.sp"
TVE 1 -->
dgplus13.sp"
LA 2 -->
Pero lo que quiero es que me slga esto:
$ ./hex2.sh file_canales.txt
dgplus0.sp
CANAL+
dgplus1.sp
CANAL+ DOS
dgplus2.sp
CANAL+ ...30
dgplus3.sp
C+ ACCIÓN
dgplus4.sp
C+ COMEDIA
dgplus5.sp
C+ DCINE
dgplus7.sp
C+ FÚTBOL
dgplus8.sp
C+ DEPORTES
dgplus12.sp
TVE 1
dgplus13.sp
LA 2
Lo que me falta es quitar los ultimos caracteres.
¿Como lo puedo hacer?
¿Lo podria hacer sin cut y mas sencillo?
Muchas gracias por vuestra ayuda.
Saludos y hasta pronto.
- Inicie sesión o regístrese para enviar comentarios
- 266 lecturas


awk '{ print $1,$2 ......}'
http://enavas.blogspot.com/2008/03/el-shell-de-linux-awk.html
o con AWK o con un regexp de perl, más fácil awk, más efectivo perl (una vez que te curres el regexp)
Muchas gracias a los dos, al final lo he hecho con "sed" con la guia de la misma pagina: http://enavas.blogspot.com/2008/03/el-shell-de-linux-comando-sed.html
Con estos cambios ya tengo lo que queria:
xmlid2=`echo $xmlid | sed 's/"//'`canal2=`echo $canal | sed 's/ -->//'`
Muchas gracias por todo y hasta pronto.
Saludos.
Ah, otra cosa, ¿como puedo hacer para que el fichero lo configure en el script?
Ahora lo ejecutaba asi:
./hex.sh file_canales.txtY dentro tenia algo asi:
while read A;do
### aqui va el script
done < $1
¿Es posible configurar el nombre y la ruta del fichero dentro del script?
Hasta pronto!
usa variables
miruta='/home/yo/la/ruta/'echo $miruta
observa que no hay espacios en blanco junto al =
usa variables
miruta='/home/yo/la/ruta/'echo $miruta
observa que no hay espacios en blanco junto al =
Perfecto!!!
Muchas gracias, funciona perfecto.
Saludos y hasta pronto, lo marco como solucionado.