linux shell编程指南第十一章------------合并与分割1
来源:互联网 发布:淘宝申请品牌材料 编辑:程序博客网 时间:2024/05/22 01:55
join用法:
j o i n用来将来自两个分类文本文件的行连在一起。如果学过S Q L语言,可能会很熟悉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,需分别将输入文件分类。
其一般格式为:
join [options] input-file1 input-file2
让我们看看它的可用选项列表:
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。
[root@localhost ~]# 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
[root@localhost ~]# cat town.txt
M.Golls Norwich NRD
P.Willey Galashiels GDD
T.Norms Brandon BSL
K.Fletch Mildenhall MAF
连接两个文件,使得名字支持详细地址。例如M . G o l l s记录指出地址为12 Hidd Rd。连接
域为域0—名字域。因为两个文件此域相同, j o i n将假定这是连接域:
[root@localhost ~]# 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不可以没有参数选项,经常指
定两个文件的- a选项。下面的例子显示匹配及不匹配域。
输出表明P. H e l l e r不匹配第二个文件中任何一个记录。再运行这个命令,但指定只显示第
一个文件中不匹配行和匹配行:
[root@localhost huangcd]# 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 MAFi
使用- o选项选择连接域。例如要创建一个文件仅包含人名及城镇, j o i n执行时需要指定显
示域。方式如下:
使用1 . 1显示第一个文件第一个域,2 . 2显示第二个文件第二个域,其间用逗号分隔。命令为:
[root@localhost ~]# join -o 1.1,2.2 names.txt town.txt
M.Golls Norwich
P.Willey Galashiels
T.Norms Brandon
K.Fletch Mildenhall
要创建此新文件,将输出结果重定向到一个文件即可。
[root@localhost ~]# join -o 1.1,2.2 names.txt town.txt >towns.txt
使用-jn m进行其他域连接,例如用文件1域3和文件域2做连接键,命令为:
join -j 1 3 -j 2 2 file1 file2
下面观察一个具体实例。有两个文件:
[root@localhost huangcd]# cat pers
P.Jones Office Runner ID897
S.Round UNIX admin ID666
L.Clip Presonl Chief ID892
[root@localhost huangcd]# 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,命令及结果如下:
[root@localhost huangcd]# join -j1 4 -j2 2 pers pers2
ID897 P.Jones Office Runner Dept2C 6 years
ID666 S.Round UNIX admin Dept3S 2 years
使用j o i n应注意连接域到底是哪一个,比如说你认为正在访问域4,但实际上j o i n应该访问
域5,这样将不返回任何结果。如果是这样,用a w k检查域号。例如,键入$ awk '{print $4}'文
件名,观察其是否匹配假想域。
- linux shell编程指南第十一章------------合并与分割1
- linux shell编程指南第十一章------------合并与分割
- linux shell编程指南第十一章------------合并与分割2
- 《LInux与Unix Shell编程指南》笔记之合并与分割
- linux shell编程指南第五章------shell输入与输出
- linux shell编程指南第五章------shell输入与输出1
- 《Linux命令行与shell脚本编程大全》 第十一章 学习笔记
- #Linux Shell 脚本编程(10)—文本过滤(合并与分割—sort、uniq、join、cut、paste、split)
- linux shell编程指南第十九章------shell 函数1
- linux shell编程指南第二十六章------shell 工具1
- 《linux与unix shell 编程指南》整理(1)
- 《LINUX与UNIX SHELL编程指南》读后感
- 《Linux与unix Shell编程指南》 总结
- E:\linux与unix shell编程指南
- Linux与unix shell编程指南
- LINUX与UNIX Shell编程指南
- LINUX与UNIX Shell编程指南
- 《Linux与unix Shell编程指南》 总结
- c语言实现最简单的哈希表(开放地址线性探测法)
- 比特币矿工快速入门指南
- 风雨20年:我所积累的20条编程经验
- hdu 1215 七夕节
- Jsoup解析报错
- linux shell编程指南第十一章------------合并与分割1
- hbase bulk load相关源码简析之PutSortReducer、KeyValueSortReducer
- 到底是第几天
- android 平板获取真实宽高(包括状态栏)
- C语言在linux下递归遍历文件夹中的文件
- 培训有用吗?软件行业应采用“学徒制”
- 容器类常用方法(4)_适配
- 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
- RPG游戏编写教程(一)——准备工作