Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Shell 使用join比较unix中的两个文件_Shell_Unix_Join_Awk - Fatal编程技术网

Shell 使用join比较unix中的两个文件

Shell 使用join比较unix中的两个文件,shell,unix,join,awk,Shell,Unix,Join,Awk,我正在solaris unix上工作。 我有两个文件: > cat temp 2 8 6 > cat temp2 1 2 3 4 5 6 7 8 9 > 现在我需要temp2中temp中存在的所有行: 我偶然发现并尝试了下面的命令 > nawk 'FNR==NR{a[$0];next}($1 in a)' temp temp2 2 6 8 > 这一切都很完美。 然后我还看到了使用join的方法 其中说明(以及手册页)“默认情况下,当我们没有明确指定字段编号时,

我正在solaris unix上工作。 我有两个文件:

> cat temp
2
8
6
> cat temp2
1
2
3
4
5
6
7
8
9
> 
现在我需要temp2中temp中存在的所有行: 我偶然发现并尝试了下面的命令

> nawk 'FNR==NR{a[$0];next}($1 in a)' temp temp2
2
6
8
>
这一切都很完美。 然后我还看到了使用join的方法 其中说明(以及手册页)“默认情况下,当我们没有明确指定字段编号时,join命令与第一个字段上的文件匹配” 所以我想如果我给
加入temp2
我会得到

2
6
8
但这是我得到的

> join temp temp2
2
8
>

如果默认情况下join与第一列匹配,有人能告诉我为什么这里缺少6吗?

您需要在运行
join
之前对文件进行排序,以便匹配它们

可通过以下方式完成:

join <(sort temp) <(sort temp2)
也是一个合适的工具,但它也需要排序的文件

comm -12 <(sort temp) <(sort temp2)

comm-12嗯,我有个错误:
>加入,这是因为您使用的是solaris。你应该先把文件分类。即:
排序温度>排序温度
<代码>排序temp2>temp2_排序
<代码>连接临时排序临时排序2临时排序
您使用的是什么shell?
comm -12 <(sort temp) <(sort temp2)