回答編集履歴

2 修正

A.Ichi

A.Ichi score 3939

2016/09/22 14:00  投稿

皆さんと異なるものに敢えてしました。sed方が良いとは思ってます。
```bash
while read -a arr; do
awk -v ar=${arr[0]} '{print ar,$0}' ${arr[2]} >>file3
done<file2
```
ご説明不足にて失礼いたしました。
```bash
while read -a arr;do
    #whileのreadにてfile2を変数arrに読み込みます。1行づつ
    #その際whileに-aを付ける事でarrに配列として値がセットされます。
    #file2は空白でセパレートされているのでデフォルトで分離されます。
    #他の場合,であればIFSで変更できます。
    #${arr[0]},${arr[1]},${arr[2]}に値file2の値がセットされます。
awk -v ar=${arr[0]} '{print ar,$0}' ${arr[2]} >>file3
     #awkの内部の変数arに値を設定する為に-vを使います。${arr[0]}をar変数に渡します。
     #${arr[2]}はファイル名が展開(awk実行前)されますので awkの入力ファイルとなります。<file2
     #awkでは$0で入力ファイル行の全体を示しています、その前にarr変数値をつけます。
     #arr,$0とカンマを入れると空白間に付けて出力します,カンマで無く空白だと結合し出力されます。
     #print出力は>>でfaile3へ追加します。
   
done<file2
    #whileへの入力ファイルとします。
```
読み方のポイントは、bashが必ず先に処理を行った後にawkが実行される事に有ります。bashにとってはawkはただのコマンドです。whileにてfile2の行数分awk実行されます。
さらに速度を求めるのであればfile2の読込みもawkで全て行うと早なると思います(修正大変ですが)。bashのloopは速度が出ないので。
さらに速度を求めるのであればfile2の読込みもawkで全て行うと早なると思います(修正大変ですが)。bashのloopは速度が出ないので。
言った手前書きました旨く行くとよいのですが・・・
```awk
awk '{cc=$1;ff=$3;while(getline <ff >0){print cc,$0;}}' file2 >>file3
```
1 追加情報

A.Ichi

A.Ichi score 3939

2016/09/22 13:30  投稿

皆さんと異なるものに敢えてしました。sed方が良いとは思ってます。
```bash
while read -a arr; do
awk -v ar=${arr[0]} '{print ar,$0}' ${arr[2]} >>file3
done<file2
```
```
ご説明不足にて失礼いたしました。
```bash
while read -a arr;do
    #whileのreadにてfile2を変数arrに読み込みます。1行づつ
    #その際whileに-aを付ける事でarrに配列として値がセットされます。
    #file2は空白でセパレートされているのでデフォルトで分離されます。
    #他の場合,であればIFSで変更できます。
    #${arr[0]},${arr[1]},${arr[2]}に値file2の値がセットされます。
awk -v ar=${arr[0]} '{print ar,$0}' ${arr[2]} >>file3
     #awkの内部の変数arに値を設定する為に-vを使います。${arr[0]}をar変数に渡します。
     #${arr[2]}はファイル名が展開(awk実行前)されますので awkの入力ファイルとなります。<file2
     #awkでは$0で入力ファイル行の全体を示しています、その前にarr変数値をつけます。
     #arr,$0とカンマを入れると空白間に付けて出力します,カンマで無く空白だと結合し出力されます。
     #print出力は>>でfaile3へ追加します。
   
done<file2
    #whileへの入力ファイルとします。
```
読み方のポイントは、bashが必ず先に処理を行った後にawkが実行される事に有ります。bashにとってはawkはただのコマンドです。whileにてfile2の行数分awk実行されます。
さらに速度を求めるのであればfile2の読込みもawkで全て行うと早なると思います(修正大変ですが)。bashのloopは速度が出ないので。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る