¿Cómo obtener el valor de filas y columnas de un archivo de texto en bash?

¿Cómo obtener el valor de filas y columnas de un archivo de texto en bash?

Estoy trabajando en un proyecto bash. Necesito obtener todos los valores (uno a la vez porque los usaré en otro lugar) de un archivo de texto. El archivo de texto que recibiré está estructurado así:

Report:
-----------
Name  Column1  Column2  Column3  Column4
row1  val1     val2     val3     val4     
row2  val5     val6     val7     val8     
row3  val9     val10    val11    val12  

No hay una cantidad fija de filas y columnas, por lo que necesitaré algo general. ¿Cómo recupero cada valor uno por uno en bash? Gracias.

Respuesta1

Puede procesar el contenido de un archivo línea por línea, usando bash whileel bucle:

i=1

while IFS= read -a line; do
  printf "Line number %d:\n" $i
  printf "%s\n" "${line[@]}"
  let i++
done < "file.txt"

Cada línea se almacena en una matriz line, puede obtener cada elemento de la matriz linemediante la sintaxis:

echo "${line[n]}"

¿Dónde nestá el orden de los elementos en la matriz?

Respuesta2

Y mediante el comando awk,

$ awk '/^Report|^-----|^Name/ {next}{for (i=2;i<=NF;i++){print $i}}' file
val1
val2
val3
val4
val5
val6
val7
val8
val9
val10
val11
val12

Omite la línea que comienza Report,---,Namee imprime todos los valores desde la segunda columna hasta el final de cada línea. Los valores se imprimen en una nueva línea.

información relacionada