Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux shell脚本中的查找_Linux_Unix_Join_Lookup - Fatal编程技术网

Linux shell脚本中的查找

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=

我有两个文件,如下所示:

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==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版中,这不起作用?那是什么?