両方のファイルを結合してスペースを保持したいと思います。

両方のファイルを結合してスペースを保持したいと思います。

2つのデータファイルを結合しようとしています。最初の項目には100,000レコードがあり、各行は人を表します。 2番目のファイルには400,000の履歴があり、最初のファイルの人は何度も表示されることがあります。両方のファイルの最初の列には、各人の一意のIDがあります。

最初の列にファイルを結合し、ファイル1の情報をファイル2に追加したいと思います。したがって、新しいファイルには、datafile1のすべての人に関する追加情報を含む400,000行があります。

私は非常に簡単な方法を使用しようとしています。

join data2 data1 > data3

しかし、data2の列3は1、2、または3文字であり、どの列にも情報がないため、出力ファイルが私が望むものと同じではありません。

すべての列間のスペースを維持し、列を並べ替えたい!

データ1:

200616550010284  1655001  10072006  20012015  07102008  29012010  09012011  28122011
200616550010285  1655001  16082006  10052010  29092008  04092009                    
200616550010289  1655001  07092006  28052013  20072009  12072010  14072011  11102012
200616550010291  1655001  31102006  28032011  14012009  12012010                    
200616550010292  1655001  09112006  09092013  05012009  17012010  02022011  01032012
200616550010293  1655001  13122006  03092009  19022009  

                        

データ2:

200616550010284 22032010  32
200616550010284 10032011 162
200616550010285 04122008  32
200616550010285 18112009  32
200616550010289 02032008  32

私が望むデータ:

200616550010284 22032010  32  1655001  10072006  20012015  07102008  29012010  09012011  28122011
200616550010284 10032011 162  1655001  10072006  20012015  07102008  29012010  09012011  2812201
200616550010285 04122008  32  1655001  16082006  10052010  29092008  04092009 
200616550010285 18112009  32  1655001  16082006  10052010  29092008  04092009 
200616550010289 02032008  32  1655001  07092006  28052013  20072009  12072010  14072011  11102012

単純結合を使用して得られたデータ:

200116380810352 06042008 60 1638081 30082001 29082014 19112005 22112006 08122007 21012009
200116380810599 09052008 31 1638081 30102001 24032013 30112004 04082006 25012008 19022009
200116380810599 27102008 76 1638081 30102001 24032013 30112004 04082006 25012008 19022009
200116386910204 02072008 162 1638691 05062001 15122009 12122005 11012007 18122007 10042009
200116386910204 20052008 60 1638691 05062001 15122009 12122005 11012007 18122007 10042009
200116386910204 26042008 60 1638691 05062001 15122009 12122005 11012007 18122007 10042009

ベストアンサー1

どうですか?

$ awk 'NR==FNR{a[$1] = substr($0,length($1)+1); next} $1 in a {print $0 a[$1]}' Data1 Data2
200616550010284 22032010  32  1655001  10072006  20012015  07102008  29012010  09012011  28122011

200616550010284 10032011 162  1655001  10072006  20012015  07102008  29012010  09012011  28122011

200616550010285 04122008  32  1655001  16082006  10052010  29092008  04092009

200616550010285 18112009  32  1655001  16082006  10052010  29092008  04092009

200616550010289 02032008  32  1655001  07092006  28052013  20072009  12072010  14072011  11102012

おすすめ記事