Bash

如何從bash中文本文件的行和列中獲取值?

  • December 16, 2014

我正在做一個 bash 項目。我需要從文本文件中獲取所有值(一次一個,因為我將在其他地方使用它們)。我將得到的文本文件結構如下:

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

沒有固定數量的行和列,所以我需要一些通用的東西。如何在 bash 中逐個檢索每個 val?謝謝。

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獲取 array 的每個元素:line

echo "${line[n]}"

其中n是數組中元素的順序。

並通過 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並為每一行列印從第二列到結尾的所有值。這些值以換行符列印。

引用自:https://unix.stackexchange.com/questions/137879