join命令的用法

join命令的用法
j o i n用来将来自两个分类文本文件的行连在一起。
下面讲述j o i n工作方式。这里有两个文件f i l e 1和f i l e 2,当然已经分类。每个文件里都有一些元素与另一个文件相关。由于这种关系, j o i n将两个文件连在一起,这有点像修改一个主文件,使之包含两个文件里的共同元素。
文本文件中的域通常由空格或t a b键分隔,但如果愿意,可以指定其他的域分隔符。一些系统要求使用j o i n时文件域要少于2 0,为公平起见,如果域大于2 0,应使用D B M S系统。
为有效使用j o i n,需分别将输入文件分类。
其一般格式为:

[Copy to clipboard] [ - ]
CODE:
join [options] input-file1 input-file2

QUOTE:
选项:
an n 为一数字,用于连接时从文件n中显示不匹配行。例如, - a 1显示第一个文件的不匹配行,- a 2为从第二个文件中显示不匹配行。
o n.m n为文件号,m为域号。1 . 3表示只显示文件1第三域,每个n,m必须用逗号分隔,如1 . 3,2 . 1。
j n m n为文件号,m为域号。使用其他域做连接域。
t 域分隔符。用来设置非空格或t a b键的域分隔符。例如,指定冒号做域分隔符- t:。

现有两个文本文件,其中一个包含名字和街道地址,称为n a m e . t x t,另一个是名字和城镇,
为t o w n . t x t。

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat names.txt
M.Golls 12 Hidd Rd
P.Heller The Acre
P.Willey 132 The Grove
T.Norms 84 Connaught Rd
K.Fletch 12 Woodlea

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat town.txt
M.Golls Norwich NRD
P.Willey Galashiels GDD
T.Norms Brandon BSL
K.Fletch Mildenhall MAF
K.Firt Mitryl Mdt

连接两个文件
连接两个文件,使得名字支持详细地址。例如M . G o l l s记录指出地址为12 Hidd Rd。连接域为域0—名字域。因为两个文件此域相同, j o i n将假定这是连接域:

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ join names.txt town.txt
M.Golls 12 Hidd Rd Norwich NRD
P.Willey 132 The Grove Galashiels GDD
T.Norms 84 Connaught Rd Brandon BSL
K.Fletch 12 Woodlea Mildenhall MAF

缺省j o i n删除或去除连接键的第二次重复出现,这里即为名字域。

  1. 不匹配连接
    如果一个文件与另一个文件没有匹配域时怎么办?这时j o i n不可以没有参数选项,经常指定两个文件的- a选项。下面的例子显示匹配及不匹配域。

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ join -a1 -a2 names.txt town.txt
M.Golls 12 Hidd Rd Norwich NRD
P.Heller The Acre
P.Willey 132 The Grove Galashiels GDD
T.Norms 84 Connaught Rd Brandon BSL
K.Fletch 12 Woodlea Mildenhall MAF
K.Firt Mitryl Mdt

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ join -a1 names.txt town.txt
M.Golls 12 Hidd Rd Norwich NRD
P.Heller The Acre
P.Willey 132 The Grove Galashiels GDD
T.Norms 84 Connaught Rd Brandon BSL
K.Fletch 12 Woodlea Mildenhall MAF

  1. 选择性连接
    使用- o选项选择连接域。例如要创建一个文件仅包含人名及城镇, j o i n执行时需要指定显示域。方式如下:
    使用1 . 1显示第一个文件第一个域,2 . 2显示第二个文件第二个域,其间用逗号分隔。命令为:

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ join -o 1.1,2.2 names.txt town.txt
M.Golls Norwich
P.Willey Galashiels
T.Norms Brandon
K.Fletch Mildenhall

使用-jn m进行其他域连接,例如用文件1域3和文件域2做连接键,命令为:

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat pers
P.Jones Office Runner ID897
S.Round UNIX admin ID666
L.Clip Personl Chief ID982

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat pers2
Dept2C ID897 6 years
Dept3S ID666 2 years
Dept5Z ID982 1 year

文件p e r s包括名字、工作性质和个人I D号。文件p e r s 2包括部门、个人I D号及工龄。连接应使用文件p e r s中域4,匹配文件p e r s 2中域2,命令及结果如下:

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ join -j1 4 -j2 2 pers pers2
ID897 P.Jones Office Runner Dept2C 6 years
ID666 S.Round UNIX admin Dept3S 2 years
ID982 L.Clip Personl Chief Dept5Z 1 year

使用j o i n应注意连接域到底是哪一个,比如说你认为正在访问域4,但实际上j o i n应该访问域5,这样将不返回任何结果。如果是这样,用a w k检查域号。例如,键入$ awk '{print $4}'文件名,观察其是否匹配假想域。

时间: 2024-11-03 20:59:24

join命令的用法的相关文章

Fireworks中Join命令接触了解

在网上,我们经常能够见到如下效果的图片,下面我们就来看看制作这种对比效果图的方法之一: [本章要点所在]:主要还是mask的运用! [特点]:理解起来比较简单,但是步骤比较繁琐 . [具体制作步骤]: 第一.利用椭圆工具画出一个填充色为蓝色的椭圆,然后用自由变换工具将其,旋转.缩放到你满意的程度为止. 第二.选中变形后的椭圆,"edit-->clone" ,克隆一个新的椭圆,将其填充色改为白色(这个颜色就是将来你要产生对比效果的颜色,可以随自己的需要来变动),克隆后的白色椭圆的位

Windows XP/2000中syskey命令的用法

  在Windows XP和Windows 2000系统中有一个我不一般不常用,但是功能强大的命令,那就是:syskey命令. 这个命令可以有效地增强你的系统安全性.也许你要说不是进入Windows XP或Windows 2000的时候已经要输入帐户和密码了吗,这样还不安全吗?著名的WIN 2000的输入法漏洞你总该听说过吧,如果你的电脑是多人使用,其他人完全可以通过破取他人的简单密码来进入系统,利用种种漏洞来获取管理员权限.有了syskey制作的加密软盘,你就可以完全放心的使用2000和XP了

Linux中cron命令的用法详解

  linux中有一个命令可以定期来执行系统任务.这就是crond服务.下面介绍下crontab命令的用法. linux任务调度的工作主要分为以下两类: 编辑/etc/crontab 文件配置cron cron服务每分钟不仅要读一次 /var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情.用 crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务.此文件的文件格式是: 1.系统执行的工作:系

CentOS系统Vi工作模式及常用命令使用用法

  VI的工作模式 Vi有三种基本的工作模式: 1.指令模式(Command Mode):指令模式主要使用方向键移动光标位置进行文字的编辑 2.文本输入模式(Input Mode) :在指令模式下(Command Mode)按a/A键.i/I键.o/O键进入文本模式 3.行末模式(Last line Mode) :末行模式主要进行一些文字编辑辅助功能,比如字串搜索.替代.保存文件等操作 指令模式(Command Mode) 下输入 a.i.o进入文本输入模式(Input Mode) 文本输入模式

浅谈php命令行用法

 这篇文章主要介绍了浅谈php命令行用法的相关资料,需要的朋友可以参考下     Php是一个非常流行的web服务端脚本语言.其实,php不仅仅可以在web服务器中充当重要角色.在命令行一样可以执行. 本文中,笔者为各位介绍下php在命令行中的使用方法. 1. 查看php的版本.配置 在命令行中输入php –v 即可查看当前php的版本. 其他的选项有: –m.-i.笔者在这里就不给出列子了. -m 会显示当前php加载的有效模块. -i 则输出无html格式的phpinfo. 使用 –ini

详解Linux系统中md5sum命令的用法

  这篇文章主要介绍了详解Linux系统中md5sum命令的用法,用来处理MD5验证的相关操作,需要的朋友可以参考下 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的"指纹"(或称"报文摘要"),不同的文件产生相 同的报文摘要的可能性是非常非常之小的. 在linux或Unix上,

grep命令常见用法

grep命令常见用法 (1)通过端口号找进程 占用8005端口的进程 netstat -anp |grep ":8005[ ]\+"|awk -F" "   {'print $7'}   占用49790端口的进程 netstat -anp |grep ":49790[ ]\+"|awk -F" "   {'print $7'}   占用48713端口的进程 netstat -anp |grep ":48713[ ]\

linux 添加链接与删除链接(ln命令的用法)

linux下添加链接与删除链接(ln命令的用法) 添加链接使用ln命令用法:#ln --help用法:ln [选项]... 目标 [链接名]或:ln [选项]... 目标... 目录或:ln [选项]... --target-directory=目录 目标...创建连至指定<目标>的链接,并可选择性指定<链接名>.如果没有指定<链接名>,会在目前的目录中创建一个和<目标>名称一样的链接.当使用第二种格式而<目标>多於一个时,最后的参数必须是目录:

linux中cat命令的用法

今天需要用cat查看文件,无奈忘记如何使用,于是整理了一下 linux中cat命令的用法:  1.用cat命令查看文件:$ cat file1;  $ cat -n file1:在查看的时候加上行号: cat命令还可以使用通配符:$ cat -n file*,把所有的file文件都显示出来(顺序显示)  也可以这样:$ cat -n file1 file2 file3 ;结果用通配符输出结果是完全一样的  2.合并文件 可以用cat命令和重定向操作符(>>)来合并文件: $ cat file*