dummy.$$.txt同じスクリプトを(違う対象に対して)同時にいくつかのジョブとして走らせるとき、中間ファイルの名前が同じだと、データの上書きなどの混乱が生じる。$$は、プロセスIDをあらわすシェル変数。異なるファイルで共通のキーをもつデータを結合するjoinコマンドを利用する場合は2つのファイルの結合する列をそれぞれsortしておかないとうまく動作しない。1列目でsortする。2列目でsortする。結合する列のデータは同じ形式にしておく必要がある。小数点の数とか,桁数とか厳密に。printfとかで予め整形しておく。sort対象を数字として捉え、-nがない場合は、sort対象を文字列として捉えるため。つけます(POSIX非準拠)。sortはこのページに詳しくまとめられています。*指定しないと1列目が結合するキー列になる。File1の1列目のデータとFile2の2列目のデータを用いて結合する。File1でペアにならなかったデータも出力するがはFile2でペアにならなかったデータは出力されない。File1とFile2がカンマ区切りの場合は-tで指定する。この場合は,条件にした列(0で指定する)とFile1の2列目とFile2の4列目を出力。File1の下部(1番下の行の後)にFile2が結合される。ファイルを横(行ごと)に結合する。File1の横(行の右)にFile2が結合される。pasteで結合するFile間のデータの区切り記号を""の中に指定する。例の場合はカンマ区切り。":"を探して空白(スペース)に置換する。'BEGIN{OFS=","}'これらを組み合わせると入力ファイルと出力ファイルの区切り文字を変換できるのだが,下のようにファイルの中身を全部変換しようとすると上手く動かない。";OFS=","}{print}'そういう時は,下のように一度ファイルの中身を読み込んであげると動くようになる。列が多い時に,同じ計算式を繰り返したいや一部だけ式を変更したい時に便利。for文と一緒に使う。(私はもっぱらこの目的で使用することが多い。)printfは,データの書式を指定したい時(桁合わせとか)にも使う。(これが本来の目的だろう。123.456789)joinコマンドを使うときには数字の桁を厳密に合わせる必要があるので,さらに小数点の桁を指定する。%8.4f(小数点以下4桁で出力(全部で8文字分確保))%08.4f(小数点以下4桁で出力(全部で8文字分確保)。整数部分の文字数を合わせる(035.1234のように))printfは単純に文字や数字を「書く」だけなので,データの区切り(スペースやカンマ)は自分でいちいち指定する必要がある。行の最後には,改行(\n)を指定しよう。しないと行の区切りもわからなくなる。printf("\n")}'こんな感じ。詳細はまた今度時間のあるときに書くかも。awkで空白のデータの入った行を削除する空白はNULLで判定できる。