Linux/Unix Shell Scripting - Bash: ¿cómo contar el numero de campos de un registro?

 
Vista:

Bash: ¿cómo contar el numero de campos de un registro?

Publicado por Misura (3 intervenciones) el 24/08/2012 05:57:20
Saludos de nuevo,

expongo mi duda:

Si tengo una cadena, por ejemplo: ". /d1/d2/d3/fich.c" y necesito obtener el número de campos que tiene si el delimitador es '/', ¿cómo puedo hacerlo?

Lo que quiero es poder recorrer esta cadena por campos ( . , d1, d2, d3, fich.c ), siendo '/' el delimitador.

¿Podrían ayudarme?

Mil Gracias.
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
Imágen de perfil de xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Bash: ¿cómo contar el numero de campos de un registro?

Publicado por xve (309 intervenciones) el 24/08/2012 09:29:51
Hola Misura, para ello, puedes hacerlo partiendo los valores

Con esta instrucción, tendrás acceso a cualquier de los valores con:
1
x=(`echo '. /d1/d2/d3/fich.c' | sed -e 's/[\/]/ /g'`)


Para conseguir por ejemplo el tercer valor:
1
echo ${x[2]}

Te devolverá d2

Para saber la cantidad de valores, puedes utilizar wc:
1
echo '. /d1/d2/d3/fich.c' | sed -e 's/[\/]/ /g' | wc -w

Te devolverá 5

Espero que te sirva.
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
sin imagen de perfil
Val: 50
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Bash: ¿cómo contar el numero de campos de un registro?

Publicado por caic (99 intervenciones) el 28/08/2012 10:34:29
Hola!

Igual llega un poco tarde pero se me ocurre que también puedes hacerlo awk:

echo ". /d1/d2/d3/fich.c" | awk -F / '{print $X}')

Sustituyendo X por 0, 1, 2, 3, etc. tendrás los distintos valores.

Saludos!
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