我正在開發一個 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
,並列印每行從第二列到末尾的所有值。這些值以換行符列印。