私は次のことをしようとしています:
- ファイルのリストを繰り返します。
- 各ファイルを編集し、「切り捨て」ファイルを出力します。
- 切り捨てられた各ファイルをプレハブマスターファイルに水平に順番に結合します。
ステップ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