回答編集履歴
2
修正
test
CHANGED
@@ -57,3 +57,15 @@
|
|
57
57
|
読み方のポイントは、bashが必ず先に処理を行った後にawkが実行される事に有ります。bashにとってはawkはただのコマンドです。whileにてfile2の行数分awk実行されます。
|
58
58
|
|
59
59
|
さらに速度を求めるのであればfile2の読込みもawkで全て行うと早なると思います(修正大変ですが)。bashのloopは速度が出ないので。
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
言った手前書きました旨く行くとよいのですが・・・
|
66
|
+
|
67
|
+
```awk
|
68
|
+
|
69
|
+
awk '{cc=$1;ff=$3;while(getline <ff >0){print cc,$0;}}' file2 >>file3
|
70
|
+
|
71
|
+
```
|
1
追加情報
test
CHANGED
@@ -11,3 +11,49 @@
|
|
11
11
|
done<file2
|
12
12
|
|
13
13
|
```
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
ご説明不足にて失礼いたしました。
|
18
|
+
|
19
|
+
```bash
|
20
|
+
|
21
|
+
while read -a arr;do
|
22
|
+
|
23
|
+
#whileのreadにてfile2を変数arrに読み込みます。1行づつ
|
24
|
+
|
25
|
+
#その際whileに-aを付ける事でarrに配列として値がセットされます。
|
26
|
+
|
27
|
+
#file2は空白でセパレートされているのでデフォルトで分離されます。
|
28
|
+
|
29
|
+
#他の場合,であればIFSで変更できます。
|
30
|
+
|
31
|
+
#${arr[0]},${arr[1]},${arr[2]}に値file2の値がセットされます。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
awk -v ar=${arr[0]} '{print ar,$0}' ${arr[2]} >>file3
|
36
|
+
|
37
|
+
#awkの内部の変数arに値を設定する為に-vを使います。${arr[0]}をar変数に渡します。
|
38
|
+
|
39
|
+
#${arr[2]}はファイル名が展開(awk実行前)されますので awkの入力ファイルとなります。<file2
|
40
|
+
|
41
|
+
#awkでは$0で入力ファイル行の全体を示しています、その前にarr変数値をつけます。
|
42
|
+
|
43
|
+
#arr,$0とカンマを入れると空白間に付けて出力します,カンマで無く空白だと結合し出力されます。
|
44
|
+
|
45
|
+
#print出力は>>でfaile3へ追加します。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
done<file2
|
50
|
+
|
51
|
+
#whileへの入力ファイルとします。
|
52
|
+
|
53
|
+
```
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
読み方のポイントは、bashが必ず先に処理を行った後にawkが実行される事に有ります。bashにとってはawkはただのコマンドです。whileにてfile2の行数分awk実行されます。
|
58
|
+
|
59
|
+
さらに速度を求めるのであればfile2の読込みもawkで全て行うと早なると思います(修正大変ですが)。bashのloopは速度が出ないので。
|