Как получить значения из строк и столбцов текстового файла в bash?

Как получить значения из строк и столбцов текстового файла в bash?

Я работаю над проектом bash. Мне нужно получить все значения (по одному за раз, потому что я буду использовать их где-то еще) из текстового файла. Текстовый файл, который я получу, имеет следующую структуру:

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

Нет фиксированного количества строк и столбцов, поэтому мне понадобится что-то общее. Как мне получить каждый val по одному в bash? Спасибо.

решение1

Вы можете обрабатывать содержимое файла построчно, используя bash whileцикл:

i=1

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

Каждая строка хранится в массиве line, получить каждый элемент массива можно lineс помощью синтаксиса:

echo "${line[n]}"

где n— порядок элемента в массиве.

решение2

И через команду 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

Он пропускает строку, с которой начинается, Report,---,Nameи печатает все значения от второго столбца до конца для каждой строки. Значения печатаются в новой строке.

Связанный контент