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