私は bash プロジェクトに取り組んでいます。テキスト ファイルからすべての値を取得する必要があります (別の場所で使用するため、一度に 1 つずつ)。取得するテキスト ファイルの構造は次のとおりです。
Report:
-----------
Name Column1 Column2 Column3 Column4
row1 val1 val2 val3 val4
row2 val5 val6 val7 val8
row3 val9 val10 val11 val12
行と列の数は固定されていないため、汎用的なものが必要になります。 bash で各値を 1 つずつ取得するにはどうすればよいでしょうか? よろしくお願いします。
答え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
、各行の 2 列目から末尾までのすべての値を出力します。値は改行で出力されます。