すべてのテキストファイルを1つのファイルにマージしようとしています。すべてのテキストファイルには1つの列と同じ数の行があります。私のデータファイル名はdata_1.txt、data_2.txt、data_3.txt、。 。 data_n.txt.ここで、nはマージするテキストファイルの数です。 1からnまで順番にマージしたいです。次のコードを試しましたが、目的の方法で機能しません。列の順序を維持しません。
私のサンプルデータは次のとおりです
data_1.txt
0.020085
0.0017361
0.77963
0.98659
0.33102
0.099835
0
0
0.073004
0.29978
data_2.txt
0.021407
0.0017191
0.82385
1.0449
0.34593
0.10535
0
0
0.078362
0.31509
data_3.txt
0.022706
0.0016876
0.85447
1.0922
0.35556
0.11063
0
0
0.083983
0.32536
希望の出力
組み合わせ.txt
0.020085 0.021407 0.022706
0.0017361 0.0017191 0.0016876
0.77963 0.82385 0.85447
0.98659 1.0449 1.0922
0.33102 0.34593 0.35556
0.099835 0.10535 0.11063
0 0 0
0 0 0
0.073004 0.078362 0.083983
0.29978 0.31509 0.32536
私の問題を解決するのに役立ちますか?
#!/bin/bash
paste data_*.txt > combined.txt
ベストアンサー1
を使用すると、zsh
glob修飾子を使用してファイル名が生成される順序に影響を与えることができます。
paste file_*.txt(n)
開く予定です数字入れて並べ替えるfile_10.txt
後ろに file_9.txt
ファイルがCR文字(Microsoftの世界からインポートされたかのように)で終わると、その文字はターミナルに出力するとカーソルが最初の列に移動します。
したがって、埋め込みファイルの場合A\rB\rC\rn
(MS-DOS形式のファイルが3つある場合に発生paste
)、上記の内容をパイピングしてCR文字を削除できますcat that-file
。C
tr -d '\r'