awk: 最初の行の部分文字列に一致するタブ区切り列の抽出

awk: 最初の行の部分文字列に一致するタブ区切り列の抽出

ヘッダー(最初の行)が別のテキストファイル(「strings.txt」)にリストされている特定の文字列と一致するテキストファイル(「columns.txt」)からタブ区切りの列を抽出したいと思います。

「columns.txt」は次のようになります。

rs2438689   rs54666437   rs9877702046   rs025436779...
0           0            0              1
1           1            2              2 
0           1            2              0 
...         ...          ...            ...

"strings.txt"は次のとおりです。

rs2438689
rs9877702046   
...

出力テキストファイル "output.txt"は次のようになります(タブ区切り)。

rs2438689   rs9877702046...
0           0              
1           2               
0           2               
...         ...    

awkを使ってこれを行う方法についての提案はありますか?ありがとうございます!

ベストアンサー1

Awkの代わりにカンマで区切られた列名のリストを作成し、それをstrings.txtsリストとして使用するにはどうすればよいですか?namedcolcsvtool

$ csvtool -t TAB -u TAB namedcol "$(paste -sd, < strings.txt)" columns.txt
rs2438689   rs9877702046
0   0
1   2
0   2
... ...

またはcsvcut/csvformatPythonに基づく同様のものcsvkit

$ csvcut -tc "$(paste -sd, < strings.txt)" columns.txt | csvformat -T
rs2438689   rs9877702046
0   0
1   2
0   2
... ...

おすすめ記事