在以下情况下。我想找到与以下内容匹配的值:file1:第5和6列与file2:第1列
如果两个文件中的值完全相同,则按照所需的输出文件进行打印
文件1
31429,36689,313212.5,2334362.5,30001,35825,31308,302412.50 2316512.50
31429,36701,313362.5,2334362.5,31429,36681,31311,2334363,31429
31429,36713,313512.5,2334362.5,31429,36719,31358,303312.50 2316512.50
31429,36749,313962.5,2334362.5,31429,36751,31398,2334362,31429
31429,36809,314712.5,2334362.5,31429,36803,31463,2334361,31429
31429,36821,314862.5,2334362.5,30001,35945,31481,2334363,31429
文件2
3000135825 302412.50 2316512.50
3000135837 302562.50 2316512.50
3000135849 302712.50 2316512.50
3000135861 302862.50 2316512.50
3000135873 303012.50 2316512.50
3000135885 303162.50 2316512.50
3000135897 303312.50 2316512.50
3000135909 303462.50 2316512.50
3000135921 303612.50 2316512.50
3000135933 303762.50 2316512.50
3000135945 303912.50 2316512.50
所需的输出
3000135825 302412.50 2316512.50 30001 35825
3000135945 303912.50 2316512.50 30001 35945
我尝试过
awk '
FNR==NR{
a[$5 OFS $6]=$5 $6
next
}
(($1) in a){
print $0,a[$1]
}
' FS="[, ]" file1 FS=" " file2
答案 0 :(得分:2)
这种单线可能会有所帮助:
awk -F'[, ]' 'NR==FNR{a[$1]=$0;next}$5$6 in a{print a[$5$6],$5,$6}' f2 f1
答案 1 :(得分:1)
执行此操作的简单方法是:
awk -F, 'NR==FNR{a[$5 $6]=$5;b[$5 $6]=$6;next;} $1 in a{print $0,a[$1],b[$1]}' file1 FS=' ' file2
3000135825 302412.50 2316512.50 30001 35825
3000135945 303912.50 2316512.50 30001 35945
或者避免第二次设置FS
:
awk -F'[, ]' 'NR==FNR{a[$5 $6]=$5;b[$5 $6]=$6;next;} $1 in a{print $0,a[$1],b[$1]}' file1 file2