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

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

Estou trabalhando em um projeto bash. Preciso obter todos os valores (um de cada vez porque os usarei em outro lugar) de um arquivo de texto. O arquivo de texto que irei receber está 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, então precisarei de algo geral. Como recupero cada val um por um no bash? Obrigado.

Responder1

Você pode processar o conteúdo de um arquivo linha por linha, usando bash whileloop:

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 em array line, você pode obter cada elemento do array linepor sintaxe:

echo "${line[n]}"

onde nestá a ordem do elemento na matriz.

Responder2

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 que começa Report,---,Namee imprime todos os valores da segunda coluna até o final de cada linha. Os valores são impressos em uma nova linha.

informação relacionada