Wie erhält man den Wert aus Zeilen und Spalten einer Textdatei in Bash?

Wie erhält man den Wert aus Zeilen und Spalten einer Textdatei in Bash?

Ich arbeite an einem Bash-Projekt. Ich muss alle Werte (einen nach dem anderen, da ich sie woanders verwenden werde) aus einer Textdatei abrufen. Die Textdatei, die ich abrufen werde, ist folgendermaßen strukturiert:

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

Es gibt keine festgelegte Anzahl von Zeilen und Spalten, daher brauche ich etwas Allgemeines. Wie rufe ich in Bash jeden Wert einzeln ab? Danke.

Antwort1

Sie können den Inhalt einer Datei zeilenweise mithilfe bash whileeiner Schleife verarbeiten:

i=1

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

Jede Zeile wird in einem Array gespeichert line. Sie können jedes Element des Arrays linemit der folgenden Syntax abrufen:

echo "${line[n]}"

wobei ndie Reihenfolge der Elemente im Array ist.

Antwort2

Und durch den awk-Befehl,

$ 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

Es überspringt die Zeile, mit der es beginnt, Report,---,Nameund druckt alle Werte von der zweiten Spalte bis zum Ende jeder Zeile. Die Werte werden in einer neuen Zeile gedruckt.

verwandte Informationen