ファイルから特定の列を抽出したいと思います。列番号はシェルスクリプトを使用して他のファイルに提供されますか?

ファイルから特定の列を抽出したいと思います。列番号はシェルスクリプトを使用して他のファイルに提供されますか?

file1から抽出する必要がある列番号を提供するfile2と比較して、file1から特定の列を抽出したいと思います。

ファイル1(ソースデータ)は次のとおりです。

  1  2  3  4  5 10 11 14  
  13 25 37 2 4 7  9 23  
  12  12 23 15 17 18 24 25

ファイル2(抽出する列番号を含む):

  2  
  4  
  5

だからfile1とfile2を比較したいと思います。ファイル2を使用してファイル1から列番号2,4,5を抽出したいと思います。

希望の出力:

  2 4 5  
  25 2 4  
  12 15 17  

どうやって進めますか?

ベストアンサー1

また試み

awk '
FNR == NR       {COL[NR] = $1                   # get column numbers from file2
                 MX = NR                        # retain max line No. in file2
                 next
                }
                {for (i=1; i<=MX; i++)  printf "%s%s", $(COL[i]), (i==MX)?ORS:OFS
                                                # print those columns, and field
                                                # or line separator
                }
' file2 file1
2 4 5
25 2 4
12 15 17

おすすめ記事