ファイルから列を読み取り、別のファイルの特定の列を追加します。

ファイルから列を読み取り、別のファイルの特定の列を追加します。

次の 2 つのファイルがあります。

ファイルA:

Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW

ファイルB:

NE_Name       SW   
ABC           4.4
ASD           4.3
...           ...

fileAは1行だけで構成され、複数のヘッダー(名前、サイト名など)があります。そして、fileBには膨大な数の行を含む2つのフィールドがあります。

これら2つのファイルを結合したいと思います。

結果ファイル:

Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW
ABC,,,,,,4.4
ASD,,,,,,4.3

したがって、出力ファイルにはfileA内のすべてのヘッダーがあり、「Name」(fileBから取得した「NE_Name」値を使用)と「SW」(fileBから取得した「SW」値を使用)という拡張フィールドがあります。

上記の2つの入力ファイルからこの出力ファイルをどのように取得できますか?

ベストアンサー1

1つの方法は次のとおりですawk

$ awk -F, 'NR==1{nf=NF-1; print $0; FS=" "} \
         NR>2{printf("%s%.*s%s\n",$1,nf,",,,,,,,,,,,,,,,,,",$2)}' fileA fileB

Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW
ABC,,,,,,4.4
ASD,,,,,,4.3

重要なのは、最初のファイルから取得した数字で区切られたprintffileBの最初と3番目のフィールドを印刷することです。,nf=NF-1

おすすめ記事