私は単一の列ファイルを持っています。行の数は24の倍数です。行の総数は先験的に分かりません。私が送信するためにパイプを使用していますので、私は何をしようとしているawkを使って列ファイルを行列に変換する
は、私がAWKを使用したい
n = number_of_rows/24.
サイズNX 24のマトリックスに単一の列を変換するためのawkを使用することです私はファイル全体の特定の列が必要なので、tarをawkに出力します。 SIGLEラインのすべての上記
23.0
20.0
17.0
16.0
16.0
15.0
18.0
20.0
23.0
25.0
27.0
29.0
30.0
31.0
32.0
31.0
30.0
29.0
27.0
25.0
23.0
22.0
20.0
19.0
23.0
22.0
、より多くの...
awk '{
for (r = 1; r <= 72; r++) {
for (c = 1; c <= 24; c++) {
a[r, c] = $1
}
}
}
END {
for (r = 1; r <= 72; r++) {
for (c = 1; c <= 24; c++) {
printf a[r, c]
}
}
}' myfile.dat
:
MYFILE.DATのような山車が含まれています。
wc -l myfile.dat
結果は、各エントリの繰り返しではなく行列である:私は以外の行の合計数を取得する方法を知らないので、私はテストするために数72を使用しています。
我々は入力列の各要素は、xからx [1]であることを考えると[N * 24]出力マトリックスが
x1 x2 x3 x4 ... x24
x25 x26 x27 x28 ... x48
x49 x50 x51 x52 ... x72
...
... xn
ないでなければならない、これは理にかなって? ご協力いただきありがとうございます。ペーストと標準入力からのデータと
ありがとう、すばらしいアプローチは、行数を定義する手間を省きます。どのようにダッシュを入力せずにそれを行うだろうか?とにかくそれは確かに問題の効率的な解決策です。どうもありがとう。 – Arraval
@Arravalあなたは 'printf'トリックを使うことができます。' paste -d '' $(printf - ' - %.s' {1..24}) ' – Sundeep
@Arraval:または' awk': 'catファイル| (i = 0; i
Cyrus