ヘッダーは同じですが、ファイル名がわずかに異なる複数のファイルをマージする方法は?

ヘッダーは同じですが、ファイル名がわずかに異なる複数のファイルをマージする方法は?

以下に示すように、大容量データセットのファイルをマージする際に問題があります。私はあなたを助けて、そのようなことをすることができるスクリプトについて教えてください。

良い名前:fluxes_year_lat_long私は100以上の場所(lat_long)に対して30年間の毎日のFluxファイルを持っており、各ポイントファイルの1〜30年をマージしたいと思います。

私のファイルは次のとおりです

ファイル名1:fluxes_2000_50_70

2000 1 1 5000 ....
2000 1 2 2000 ....
.
.
.
2000 12 31 5000
YYYY M D Fluxes

ファイル名2:fluxes_2001_50_70

2001 1 1 5000
YYYY M D Fluxes
.
.
.

まで:

ファイル名30:fluxes_2030_50_70

2030 1 1 5000
YYYY M D Fluxes
.
.
.

各ファイルの行数は同じです。

2000年から2030年まで、各支店の場所の毎日のフラックスをマージする出力が必要です。

結果ファイル:fluxes_lat_long

YYYY MM DD Fluxes value.

また、スクリプトが fluxes_ という名前で始まるファイルを読み込み、マージしたいと思います。返信ありがとうございます。

ベストアンサー1

考える与えられたファイルについて質問します。

fluxes_2000_10_10   fluxes_2001_10_10    fluxes_2003_10_10

そして

fluxes_2000_20_10   fluxes_2001_20_10    fluxes_2003_20_10

上記の各ファイルに対して緯度10_10に「すべて」ファイルを作成し、緯度20_10に「全」ファイルを作成します。

この場合:

bash$ for lat in $(ls -1 fluxes_* | sed 's/fluxes_[0-9]*_\([0-9]*_[0-9]*\)/\1/' |sort|uniq )
do 
    echo "processing $lat ..." 
    cat fluxes_[0-9]*_${lat} > fluxes_TOT_${lat} 
done 

ls -1 fluxes_* | sed 's/fluxes_[0-9]*_\([0-9]*_[0-9]*\)/\1/' | sort | uniqfor緯度(x_y)数値の一意のペアの両方を見つけて、ループcatとその緯度(すべての年)のファイル内容を使用して段階的に実行しますfluxes_TOT_x_y

おすすめ記事