Hey!! Sky!

Feb 25, 2008

根据指定栏位连接两个文件——join 命令

       在 linux/unix 中可以使用 join 命令来连接两个文件。它会根据指定栏位,找到两个文件中指定栏位内容相同的行,将他们合并,并根据要求的格式输出内容。该命令对于比较两个文件的内容很有帮助。

语法
join [ -i ][ -a filenumber | -v filenumber ]  [  -1 fieldnumber  ]
[  -2 fieldnumber ]  [ -o list ]  [ -e string ]  [ -t char ]
     file1  file2

主要参数

-i 或 --igore-case   比较栏位内容时,忽略大小写的差异。
-a <1或2>   除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
-v <1或2>   跟-a相同,但是只显示文件中没有相同栏位的行。
-1/-j1 <栏位>   连接[文件1]指定的栏位。栏位从 1 开始,默认为1。
-2/-j2 <栏位>   连接[文件2]指定的栏位。栏位从 1 开始,默认为1。
-j <栏位> 相当于 -1 <栏位> -2 <栏位>
-e <字符串>   若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
-o <格式>   按照指定的格式来显示结果。
-t <字符>   使用栏位的分隔字符。
 --help   显示帮助。
--version   显示版本信息。

实例

oracle DBALNP01@lonespcmp1 > cat timestamp_list_LNWASP1_pre.out.es
Feb 22 14:53 /data/oracle/LNWASP1/data1/LNWASP1_QUEST_SMALL1_DATA_01.dbf
Feb 22 14:53 /data/oracle/LNWASP1/data1/LNWASP1_audits01.dbf
Feb 22 14:54 /data/oracle/LNWASP1/data1/LNWASP1_data01_01.dbf
Feb 22 14:54 /data/oracle/LNWASP1/data1/LNWASP1_index01_01.dbf
Feb 22 14:53 /data/oracle/LNWASP1/data1/LNWASP1_tools_01.dbf
Feb 22 14:53 /data/oracle/LNWASP1/data1/LNWASP1_users_01.dbf
Feb 22 14:53 /data/oracle/LNWASP1/index1/LNWASP1_sysaux02.dbf
Feb 22 14:53 /data/oracle/LNWASP1/index1/LNWASP1_sysaux03.dbf
Feb 22 14:54 /data/oracle/LNWASP1/redo1/LNWASP1_ctl_01.dbf
Feb 22 14:54 /data/oracle/LNWASP1/redo2/LNWASP1_ctl_02.dbf
Feb 22 14:54 /data/oracle/LNWASP1/redo3/LNWASP1_ctl_03.dbf
Feb 22 14:54 /data/oracle/LNWASP1/rollback/LNWASP1_undotbs01.dbf
Feb 22 14:53 /data/oracle/LNWASP1/system/LNWASP1_sysaux01.dbf
Feb 22 14:53 /data/oracle/LNWASP1/system/LNWASP1_system01.dbf
Feb 22 05:06 /data/oracle/LNWASP1/temp/LNWASP1_temp01.dbf
(/apps/oracle/scripts/ADHOC/DOBCPFILETSCHECK/tmp)
oracle DBALNP01@lonespcmp1 > cat timestamp_list_LNWASP1_post.out.es
Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_QUEST_SMALL1_DATA_01.dbf
Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_audits01.dbf
Feb 22 14:58 /data/oracle/LNWASP1/data1/LNWASP1_data01_01.dbf
Feb 22 14:58 /data/oracle/LNWASP1/data1/LNWASP1_index01_01.dbf
Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_tools_01.dbf
Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_users_01.dbf
Feb 22 14:57 /data/oracle/LNWASP1/index1/LNWASP1_sysaux02.dbf
Feb 22 14:57 /data/oracle/LNWASP1/index1/LNWASP1_sysaux03.dbf
Feb 22 14:58 /data/oracle/LNWASP1/redo1/LNWASP1_ctl_01.dbf
Feb 22 14:58 /data/oracle/LNWASP1/redo2/LNWASP1_ctl_02.dbf
Feb 22 14:58 /data/oracle/LNWASP1/redo3/LNWASP1_ctl_03.dbf
Feb 22 14:58 /data/oracle/LNWASP1/rollback/LNWASP1_undotbs01.dbf
Feb 22 14:57 /data/oracle/LNWASP1/system/LNWASP1_sysaux01.dbf
Feb 22 14:57 /data/oracle/LNWASP1/system/LNWASP1_system01.dbf
Feb 22 05:06 /data/oracle/LNWASP1/temp/LNWASP1_temp01.dbf
(/apps/oracle/scripts/ADHOC/DOBCPFILETSCHECK/tmp)
oracle DBALNP01@lonespcmp1 > join -1 4 -2 4 -o 1.1 1.2 1.3 2.1 2.2 2.3 2.4 timestamp_list_LNWASP1_pre.out.es timestamp_list_LNWASP1_post.out.es
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_QUEST_SMALL1_DATA_01.dbf
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_audits01.dbf
Feb 22 14:54 Feb 22 14:58 /data/oracle/LNWASP1/data1/LNWASP1_data01_01.dbf
Feb 22 14:54 Feb 22 14:58 /data/oracle/LNWASP1/data1/LNWASP1_index01_01.dbf
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_tools_01.dbf
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/data1/LNWASP1_users_01.dbf
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/index1/LNWASP1_sysaux02.dbf
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/index1/LNWASP1_sysaux03.dbf
Feb 22 14:54 Feb 22 14:58 /data/oracle/LNWASP1/redo1/LNWASP1_ctl_01.dbf
Feb 22 14:54 Feb 22 14:58 /data/oracle/LNWASP1/redo2/LNWASP1_ctl_02.dbf
Feb 22 14:54 Feb 22 14:58 /data/oracle/LNWASP1/redo3/LNWASP1_ctl_03.dbf
Feb 22 14:54 Feb 22 14:58 /data/oracle/LNWASP1/rollback/LNWASP1_undotbs01.dbf
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/system/LNWASP1_sysaux01.dbf
Feb 22 14:53 Feb 22 14:57 /data/oracle/LNWASP1/system/LNWASP1_system01.dbf
Feb 22 05:06 Feb 22 05:06 /data/oracle/LNWASP1/temp/LNWASP1_temp01.dbf

参考

http://www.linuxmanpages.com/man1/join.1.php
http://www.allwiki.com/index.php?title=Linux%E5%91%BD%E4%BB%A4:Join&variant=zh-cn