Linuxでawkとして動作するvlookup

Linuxでawkとして動作するvlookup

こんにちは。データを含む2つのファイル(file1)があります。

4,abc
3,xyz
5,fut
6,gfd

ファイル2:

gfd,2.3
xyz,4.5
abc,6.7
fut,3.2

Linuxスクリプトコマンドを使用してfile3を出力ファイルとして生成したいと思います。

4,6.7
3,4.5
5,3.2
6,2.3

FR = NFRなどのawkスクリプトを使用してこれを行う方法

答え1

そしてjoin

join -t, -1 2 -2 1 -o 1.1,2.2 <(sort -t, -k2 file1) <(sort -t, -k1 file2)
  • -t,区切り記号をに設定します,
  • -1 2最初のファイル接続フィールドは2番目です。
  • -2 12番目のファイル接続フィールドが1番目です。
  • -o 1.1,2.2出力形式
  • <(sort ...)結合には、結合フィールドにソートされた入力ファイルが必要です。

答え2

そしてawk

script.awk:

FNR==NR{
    var[$2]=$1
}
FNR!=NR{
    print(var[$1]","$2)
}

呼び出しスクリプト

awk -F, -f script.awk file1 file2

答え3

awk onelinerに似ています:

awk -F"," 'FNR==NR{var[$2]=$1;next;}{print var[$1]FS$2}'  file1 file2

出力:

$ awk -F"," 'FNR==NR{var[$2]=$1;next;}{print var[$1]FS$2}'  file1.txt file2.txt
6,2.3
3,4.5
4,6.7
5,3.2

関連情報