5.1 使用场景: 如果需要对2个文件的数据实现像数据库里面的全连接一样的操作就可以用以下经验、命令实现。 这里的全连接是指对2个文件的数据按照某一列
来做并集的操作,也就是两个文件会指定一个公有的列(当然这个列的数据可以有相同也可以有不同),然后求这个列的并集以及能同时输出其他列的值。如果某个文件的某一列
(公有列除外)不存在于另一个文件的这一列,那么我们就要变量替换掉这个“不存在”的值。就像数据库会帮你替换成NULL值一样。
5.2 上代码例子!
[jianpx@jianpxs-MacBook-Pro ~/temp/test/join]$ cat a
a,1
b,2
c,3
d,4
[jianpx@jianpxs-MacBook-Pro ~/temp/test/join]$ cat b
c,7
d,9
e,10
a、b两个文件我默认已经按照第一列排好序了(我们利用join命令时必须保证两个文件是按照某一个公有的列有序的!)
然后我的需求是要输出类似这样的:
a,1,NULL
b,2,NULL
c,3,7
d,4,9
e,NULL,10
从结果可以分析看看, 因为e开头的这一行不存在与a文件,所以连接的时候对应第二列的位置就应该被置为NULL(当然你也可以用其他默认值代替NULL,比数据库要灵活一点)
而a开头的这一样也不存在于b文件,所以第三列的位置也应该是NULL。
从 man join得到的参数来看, -a 、-e、-o都能帮到我。
-a field_number : In addition to the default output, produce a line for each unpairable line in file file_number. 意思是把两个文件中不匹配的行也输出出来。
-e string: Replace empty output fields with string 意思是指定需要变量替换的值。
-o list: The -o option specifies the fields that will be output from each file for each line with matching join fields. Each element of list has the either the
form `file_number.field', where file_number is a file number and field is a field number, or the form `0' (zero), representing the join field. The ele-
ments of list must be either comma (`,') or whitespace separated. (The latter requires quoting to protect it from the shell, or, a simpler approach is
to use multiple -o options.) 其实这里对我最有用的就是0可以代表公有的列的位置,这样就不用用一个明确的位置(比如1)来指定这个公共列了,因为
用明确位置指定的缺点是这个公有列如果在两个文件上的位置是不一样就会有被替换的可能,比如在文件a是第一列,在文件2是第二列。
不知道大家现在能才出来没?(可以先不看下面的答案自己思考下)
好, 公布答案了, 看看你们做的对不对。
[jianpx@jianpxs-MacBook-Pro ~/temp/test/join]$ join -t, -j1 -o 0,1.2,2.2 -e NULL -a 1 -a 2 a b
a,1,NULL
b,2,NULL
c,3,7
d,4,9
e,NULL,10
分享到:
相关推荐
This application shows you how to implement professional looking scrolling credits. There are two different demos: top to bottom and left to right. You can click on the credited individual to send him...
SAP 方法论 Run SAP Methodology How to Implement End-to-End Solution Operations
### 如何在表维护中实现事件 本文将详细介绍如何在表维护中实现事件,并通过一个具体案例来展示这一过程。该方法特别适用于在创建新条目时进行多种验证和检查。 #### 场景设定 假设我们需要更新一张自定义表...
在MATLAB中实现面向对象编程(Object-Oriented Programming,OOP)原理是提升代码组织性和可维护性的重要方法。MATLAB虽然最初设计为一种数值计算工具,但随着时间的发展,它逐渐增加了对OOP的支持。...
【标题】: "Visual Basic项目中的分割条实现示例应用" 【描述】: 在软件开发中,分割条(Splitter Bar)是一种常见的用户界面元素,它允许用户动态调整两个或多个区域的大小,以优化视图空间。...
### 如何实施SCP-ECG(第二部分) #### 引言 随着信息技术的进步与医疗行业的融合不断加深,电生理信号的记录与传输变得尤为重要。在众多应用中,心电图(ECG)作为早期检测心脏疾病的一项非侵入性检查手段,在西方...
在编程领域,为应用程序添加打印支持是一项常见的任务,它允许用户将程序中的数据或界面输出到物理媒介,如纸张或者电子PDF文档。本篇将详细介绍如何在你的程序中实现打印支持,涉及到的关键知识点包括控件操作、...
在构建世界级的信息安全和数据安全体系时,身份与访问管理(IAM)扮演着至关重要的角色。IAM项目的目标是实现高效且低成本的业务流程,有效管理企业安全风险,并确保符合IAM的法规要求。以下是对IAM转型项目的详细...
•How to Setup the plugin on your website. •How to use only the Basic plugin (minimal setup guide). •Security considerations. •The plugin API. •List of all available Options - including events and...
标题中的"A tool to generate class files to implement stored procedure"指的是一个软件工具,它的主要功能是自动生成Java类文件,这些类文件被设计用来实现数据库中的存储过程。存储过程是在数据库中预编译的SQL...
Teradata Cookbook Over 85 recipes to implement efficient data warehousing solutions 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
通过以上知识点的梳理,我们可以看出,《Planing to Implement Service Management》这本书提供了一个全面而深入的指南,帮助读者理解和实施服务管理的原则和实践。无论是对于刚接触该领域的初学者还是寻求进一步...
rsa using java to implement and we can encrypt and decrypt files.
Machine Learning: Step-by-Step Guide To Implement Machine Learning Algorithms with Python By 作者: Rudolph Russell ISBN-10 书号: 1719528403 ISBN-13 书号: 9781719528405 出版日期: 2018-05-22 pages ...
firstly, we focus on detailed coverage of deep learning (DL) and transfer learning, comparing and contrasting the two with easy-to-follow concepts and examples. The second area of focus is real-world...
Chapter 8, Putting Them All Together, explains how to implement a heterogeneous FaaS system combining all three FaaS platforms running seamlessly together on a robust product-grade Swarm cluster....