Como obter o valor de linhas e colunas do arquivo de texto no bash?

0

Estou trabalhando em um projeto bash. Eu preciso obter todos os valores (um de cada vez, porque vou usá-los em outro lugar) a partir de um arquivo de texto. O arquivo de texto que eu vou estar recebendo é estruturado assim:

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

Não há uma quantidade fixa de linhas e colunas, por isso vou precisar de algo geral. Como faço para recuperar cada val um por um em bash? Obrigado.

    
por Alias 18.06.2014 / 19:07

2 respostas

2

Você pode processar o conteúdo de um arquivo linha a linha, usando bash while loop:

i=1

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

Cada linha é armazenada na matriz line , você pode obter cada elemento da matriz line pela sintaxe:

echo "${line[n]}"

em que n é a ordem do elemento na matriz.

    
por 18.06.2014 / 19:28
2

E através do 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

Ele pula a linha começa com Report,---,Name e imprime todos os valores da segunda coluna até o final de cada linha. Os valores são impressos em uma nova linha.

    
por 18.06.2014 / 19:36