こんにちは。データを含む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 1
2番目のファイル接続フィールドが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