如何在bash中从文本文件的行和列中获取值?

如何在bash中从文本文件的行和列中获取值?

我正在开发一个 bash 项目。我需要从文本文件中获取所有值(一次一个,因为我将在其他地方使用它们)。我将得到的文本文件的结构如下:

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

没有固定数量的行和列,所以我需要一些通用的东西。如何在 bash 中一一检索每个 val?谢谢。

答案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"

每一行都存储在 array 中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,并打印每行从第二列到末尾的所有值。这些值以换行符打印。

相关内容