Awk 如果与打印匹配,则在其他文件中查找值

Awk 如果与打印匹配,则在其他文件中查找值,awk,Awk,在下列情况下。我想查找与file2:columns 1在:file1:columns 5和6中匹配的值 如果两个文件中的值完全相同,则按所需的输出文件打印 file1 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,31

在下列情况下。我想查找与file2:columns 1在:file1:columns 5和6中匹配的值

如果两个文件中的值完全相同,则按所需的输出文件打印

file1

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

做到这一点的简单方法是:

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

做到这一点的简单方法是:

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

这一行可能有助于:

awk -F'[, ]' 'NR==FNR{a[$1]=$0;next}$5$6 in a{print a[$5$6],$5,$6}' f2 f1

这一行可能有助于:

awk -F'[, ]' 'NR==FNR{a[$1]=$0;next}$5$6 in a{print a[$5$6],$5,$6}' f2 f1

这里的问题是,file1的字段5和6是否总是有5个字符,没有例外?文件2中的字段1是否总是有10个字符?如果缺少某些字符,该如何处理。还原
a
a[$5$6]=$5 OFS$6
)的内容。语句中的
检查键是否是数组的一部分,而不是值是否是数组的一部分(
a[key]=value
)我希望
12345
->
123
45
12
345
对于您的问题来说不是问题。file1的字段5和6是否总是有5个字符,没有例外?文件2中的字段1是否总是有10个字符\是的,这是正确的问题是,file1的字段5和6是否总是有5个字符,没有例外?文件2中的字段1是否总是有10个字符?如果缺少某些字符,该如何处理。还原
a
a[$5$6]=$5 OFS$6
)的内容。
语句中的
检查键是否是数组的一部分,而不是值是否是数组的一部分(
a[key]=value
)我希望
12345
->
123
45
12
345
对于您的问题来说不是问题。file1的字段5和6是否总是有5个字符,没有例外?文件2中的字段1是否总是有10个字符\是的,这是正确的