Linux shell脚本中的查找
我有两个文件,如下所示: cat文件\u 1:Linux shell脚本中的查找,linux,unix,join,lookup,Linux,Unix,Join,Lookup,我有两个文件,如下所示: cat文件\u 1: 12 a 34 b 24 c 18 d x a y c z d cat文件2: 12 a 34 b 24 c 18 d x a y c z d 我需要类似于shell脚本的内容: x a 12 y c 24 z d 18 文件1和文件2的行数不同,join不起作用,因为我无法对文件进行排序(文件已按要求进行排序,如果我再次按join排序,则要求将不起作用)。@Maulik Patel:请再试一次 awk 'FNR=
12 a
34 b
24 c
18 d
x a
y c
z d
cat文件2:
12 a
34 b
24 c
18 d
x a
y c
z d
我需要类似于shell脚本的内容:
x a 12
y c 24
z d 18
文件1和文件2的行数不同,join不起作用,因为我无法对文件进行排序(文件已按要求进行排序,如果我再次按join排序,则要求将不起作用)。@Maulik Patel:请再试一次
awk 'FNR==NR{A[$2]=$0;next} ($2 in A){print A[$2] FS $1}' Input_file2 Input_file1
非常简短的描述:
因此,这里我使用FNR==NR条件,当读取输入_文件并将$0(当前行的值)保存到索引为字段2的数组中时,该条件将为真
然后在读取第二个输入文件时,我检查输入文件2的第二个字段在数组A中,并用输入文件1的第一个字段打印它的值 这里是另一种方法
join -1 2 -2 2 file_2 file_1 --nocheck-order -o 1.1,1.2,2.1
x a 12
y c 24
z d 18
您不需要整行
$0
,因为它对于较大数量的字段不是最佳的,所以只使用所需的字段。另外,您的答案是在逻辑上完全复制了我的答案,为了复制,您可以很好地删除它。对于我的情况(6.5版),这可以100%正常工作,但在unix 6.6 6 6.5版中,这不起作用?那是什么?