Linux的join命令
2015-10-15 17:41
489 查看
Join是将文件连接起来的一个命令
Join - join lines of two files on a common field
语法结构join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
join的参数列表
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
-e string 用string代替不存在的域
-i 忽视大小写
-o 按照指定的格式来显示结果。
-t 字符串分割
-j FIELD :等同于 -1 FIELD -2 FIELD,-j指定一个域作为匹配字段
-v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。
-1 连接[文件1]指定的栏位
-2 连接[文件2]指定的栏位
代码实现
实例join的使用方式
☁ 20151008 cat b a s b e c b d wq ☁ 20151008 cat low_up a 61 b 25 c 15 d 32 ☁ 20151008 join b low_up a s 61 b e 25 c b 15 d wq 32 ☁ 20151008 join low_up b a 61 s b 25 e c 15 b d 32 wq
join后面跟是文件是有顺序关系,并且只有相同的line才能join在一起
2 -a和-v的区别
- a是显示所有数据并且显示没有相同的line。
- v只显示文件中没有相同栏位的行。
##我们在文件加不相同的列,并且file1和file2的必须是一一对应的,如果不对应需要先排序 ☁ 20151008 cat low_up a 61 b 25 c 15 d 32 e 4 ☁ 20151008 cat b a s b e c b d wq ☁ 20151008 join -a1 low_up b a 61 s b 25 e c 15 b d 32 wq e 4 ☁ 20151008 join -a2 low_up b a 61 s b 25 e c 15 b d 32 wq ☁ 20151008 join -v1 low_up b e 4 ☁ 20151008 join -v2 low_up b
这边稍微修改文件的位置,那么结果将完全不同
☁ 20151008 join -a1 low_up b e 4 a 61 b 25 c 15 d 32 ☁ 20151008 join -a2 low_up b a s b e c b d wq ☁ 20151008 join -v1 low_up b e 4 a 61 b 25 c 15 d 32 ☁ 20151008 join -v2 low_up b a s b e c b d wq
所以如果想要对文件进行join处理的话,需要提前对他进行排序,不然可能会跟预期的结果不一样
3. -o,-j和-t连用
- -o 按照指定的格式来显示结果。
- -t 字符串分割
- -j FIELD :等同于 -1 FIELD -2 FIELD,-j指定一个域作为匹配字段
☁ 20151008 cat low_up a,61 b,25 c,15 d,32 ☁ 20151008 cat b a,s b,e c,b d,wq ☁ 20151008 join -a1 -j1 -t, -o 1.1,1.2 low_up b a,61 b,25 c,15 d,32 ☁ 20151008 join -a1 -j1 -t, -o 1.1 low_up b a b c d ☁ 20151008 join -a1 -j1 -t, -o 1.2 low_up b 61 25 15 32 ☁ 20151008 join -a2 -j1 -t, -o 1.1 low_up b a b c d ☁ 20151008 join -a2 -j2 -t, -o 1.1 low_up b ☁ 20151008 join -a2 -j1 -t, -o 1.1 low_up b a b c d
结论
总体来说你需要用什么命令那么需要看具体的业务需求,有需要去重的操作,有需要合并的操作都可以,个人也挺喜欢paste这个命令和sed,cut等命令结合处理起来处理文件的感觉也是棒棒哒.顺带吐槽一下,MD感觉用起来有bug啊,不知道是不是我不会用的缘故。
相关文章推荐
- CentOS 7下编译FreeSWITCH 1.6
- Linux的用户和用户组管理
- Linux LVM硬盘管理及LVM扩容
- Linux中用stat命令查看文件时3个时间点解析
- 每天一个linux命令(30): chown命令
- linux下设置最大文件打开数nofile及nr_open、file-max说明
- Linux的权限说明
- Linux中VMware虚拟机增加磁盘空间的扩容操作
- 新版linux内核对nat的修改
- Linux/XWindow的api函数介绍
- CentOS清除用户登录记录和命令历史方法
- 浅谈 Linux 系统中的 SNMP Trap
- LINUX下压缩某个文件夹(文件夹打包)
- Linux——安装Python
- linux消息队列的内核限制
- linux应用编程笔记(10)有名管道编程
- Linux命令大全
- Linux启动流程解析:init_post函数
- linux源码分析
- linux 常用命令