ファイルを繰り返して水平に結合

ファイルを繰り返して水平に結合

私は次のことをしようとしています:

  1. ファイルのリストを繰り返します。
  2. 各ファイルを編集し、「切り捨て」ファイルを出力します。
  3. 切り捨てられた各ファイルをプレハブマスターファイルに水平に順番に結合します。

ステップ1と2は機能しますが、フェーズ3は機能しません。

はい

主なファイル:

Col1   Col2
A       1
B       1
C       2

ファイルS1のファイルを切り捨てる:

S1.Col3    S1.Col4
0            1
1            1
1            1

S1とS2がMASTERに参加した後、希望の出力は次のようになります。

Col1   Col2   S1.Col3   S1.Col4   S2.Col3   S2.Col4
A       1       0         1          0        1
B       1       1         1          1        0
C       2       1         1          0        0

各ループの後、次のタスクを実行しようとします。

paste MASTER.txt S1.txt > MASTER.txt

ところで、上記のファイルの代わりに最後のSファイルのデータのみを含むファイルが出てきます。出力なしでループの外で実行してみましたが、すべてがうまくいきました。回答ありがとうございます。

これを行うために、forループを非常に簡単に分析しました。

for FILE in FILELIST
do
    cut -f4,6 $FILE > ${FILE}_trimmed.txt
    paste MASTER.txt ${FILE}_trimmed.txt > MASTER.txt
done

ベストアンサー1

コメントでこの質問に答えてくれた1_CRに感謝します。

> MASTER.txt貼り付けで実際に水平結合が完了する前にファイルを切り取ります。答えは、一時ファイル(MASTER2.txtなど)に出力し、名前を正しいファイル名に変更することです(mvコマンドを使用)。

私の前のコード:

paste MASTER.txt ${FILE}_trimmed.txt > MASTER.txt

固定コード:

paste MASTER.txt ${FILE}_trimmed.txt > MASTER2.txt && mv MASTER2.txt MASTER.txt

おすすめ記事