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
while
el 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 line
mediante la sintaxis:
echo "${line[n]}"
¿Dónde n
está 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,---,Name
e imprime todos los valores desde la segunda columna hasta el final de cada línea. Los valores se imprimen en una nueva línea.