加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为什么unix实用程序连接会在不同的Linux发行版上产生不同的结果

发布时间:2020-12-15 21:43:33 所属栏目:安全 来源:网络整理
导读:我有两个排序文件: cat file113cat file2C 1 DB 2 EA 3 F 我运行这个命令: join -1 1 -2 2 -v2 file1 file2 使用GNU coreutils 6.9.92.4-f088d-dirt 2008年1月在Debian 4.3.2-1.1上我得到: B 2 E 使用GNU coreutils 8.12.197-032bb 2011年9月在Ubuntu 4.4
我有两个排序文件:

cat file1
1
3

cat file2
C 1 D
B 2 E
A 3 F

我运行这个命令:

join -1 1 -2 2 -v2 file1 file2

使用GNU coreutils 6.9.92.4-f088d-dirt 2008年1月在Debian 4.3.2-1.1上我得到:

B 2 E

使用GNU coreutils 8.12.197-032bb 2011年9月在Ubuntu 4.4.3-4ubuntu5.1(Ubuntu精确(12.04.2 LTS))我得到:

2 B E

为什么我会得到不同的结果?为什么我不能在任何地方找到这种变化?以下是两个人力输出的内容:

-a FILENUM
          print  unpairable  lines coming from file FILENUM,where FILENUM
          is 1 or 2,corresponding to FILE1 or FILE2

   -v FILENUM
          like -a FILENUM,but suppress joined output lines

以下是我为每个Linux发行版获得相同答案所必须做的事情:

join -1 1 -2 2 -v2 -o 2.1,2.2,2.3 file1 file2

解决方法

我找到了答案.以下是较新版本的info join输出的一部分:

`-o auto'

 If the keyword `auto' is specified,infer the output format from
 the first line in each file.  This is the same as the default
 output format but also ensures the same number of fields are
 output for each line.  Missing fields are replaced with the `-e'
 option and extra fields are discarded.

 Otherwise,construct each output line according to the format in
 FIELD-LIST.  Each element in FIELD-LIST is either the single
 character `0' or has the form M.N where the file number,M,is `1'
 or `2' and N is a positive field number.

 A field specification of `0' denotes the join field.  In most
 cases,the functionality of the `0' field spec may be reproduced
 using the explicit M.N that corresponds to the join field.
 However,when printing unpairable lines (using either of the `-a'
 or `-v' options),there is no way to specify the join field using
 M.N in FIELD-LIST if there are unpairable lines in both files.  To
 give `join' that functionality,POSIX invented the `0' field
 specification notation.

 All output lines--including those printed because of any -a or -v
 option--are subject to the specified FIELD-LIST.

虽然我仍然认为核心unix实用程序改变了版本之间的行为是不幸的,但神秘解决了.在使用新的Linux发行版时,这教会我重新阅读文档.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读