bashプロジェクトを開発中です。テキストファイルからすべての値を取得する必要があります(他の場所で使用するため、一度に1つずつ)。私が得るテキストファイルの構造は次のとおりです。
Report:
-----------
Name Column1 Column2 Column3 Column4
row1 val1 val2 val3 val4
row2 val5 val6 val7 val8
row3 val9 val10 val11 val12
行と列の数が固定されていないため、一般的なものが必要です。 Bashで各Valを1つずつ検索する方法は?ありがとうございます。
答え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番目の列から各行の終わりまですべての値を印刷します。値は改行文字で印刷されます。