N個のcsvファイルを1つのcsvファイルにリンクする

N個のcsvファイルを1つのcsvファイルにリンクする

利用可能なすべてのCSVファイルを1つに関連付けるシェルスクリプトを作成する必要があります。これらのCSVファイルはすべて同じ構造(たとえば、同じヘッダーと列数)を持ち、ファイルには共通の接頭辞がありますGFP

たとえば、ある日、次のようなファイルが発生する可能性があります。

GFP_20210609.csv
GFP_20210610.csv

あるいは、時々これらのファイルがたくさんあるかもしれません。ここでの問題は、1日にどれだけのファイルが表示されるかわからないということです(1日に5つ以下のCSVファイルを想定)。

私はシェルスクリプトに初めて触れました。どんな助けでも大変感謝します。

sed 1d GFP_20210610.csv > GFP_20210610_NO_HEADER.csv
cat GFP_20210609.csv GFP_20210610_NO_HEADER.csv > GFP_FINAL.csv

ベストアンサー1

努力するawk

awk 'NR==1||FNR>1' GFP*.csv > output.csv

これにより、重複ヘッダーを抑制するために、2番目の行(FNR>1各ファイルの行カウンタが1より大きいという意味)から始まる各ファイルのすべての行が印刷されますが、最初の行である最初の行(NR==1)を印刷する必要があります。ファイル。

これにより、出力がファイルにリダイレクトされますoutput.csv

awkこの構文は、ルールブロックの外側で見つかった条件(){ ...}がtrueの場合、現在の行が印刷されるという事実を利用します。この場合、実際に編集したくなく入力ファイルのみをフィルタリングするため、ルールブロックを完全に省略できます。

おすすめ記事