linux命令join与paste
- join
join 看字面上的意义 (加入/参加) 就可以知道,他是在处理两个文件之间的数据, 而且,主要是在处理『两个文件当中,有 "相同数据" 的那一行,才将他加在一起』的意思。我们利用底下的简单例子来说明:
[root@www ~]# join [-ti12] file1 file2 选项与参数: -t :join 默认以空格符分隔数据,并且比对『第一个字段』的数据,如果两个文件相同,则将两笔数据联成一行,且第一个字段放在第一个! -i :忽略大小写的差异; -1 :这个是数字的 1 ,代表『第一个文件要用那个字段来分析』的意思; -2 :代表『第二个文件要用那个字段来分析』的意思。范例一:用 root 的身份,将 /etc/passwd 与 /etc/shadow 相关数据整合成一栏 [root@www ~]# head -n 3 /etc/passwd /etc/shadow ==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin==> /etc/shadow <== root:$1$/3AQpE5e$y9A/D0bh6rElAs:14120:0:99999:7::: bin:*:14126:0:99999:7::: daemon:*:14126:0:99999:7::: # 由输出的数据可以发现这两个文件的最左边字段都是账号!且以 : 分隔[root@www ~]# join -t ':' /etc/passwd /etc/shadow root:x:0:0:root:/root:/bin/bash:$1$/3AQpE5e$y9A/D0bh6rElAs:14120:0:99999:7::: bin:x:1:1:bin:/bin:/sbin/nologin:*:14126:0:99999:7::: daemon:x:2:2:daemon:/sbin:/sbin/nologin:*:14126:0:99999:7::: # 透过上面这个动作,我们可以将两个文件第一字段相同者整合成一行! # 第二个文件的相同字段并不会显示(因为已经在第一行了嘛!)范例二:我们知道 /etc/passwd 第四个字段是 GID ,那个 GID 记录在 /etc/group 当中的第三个字段,请问如何将两个文件整合? [root@www ~]# head -n 3 /etc/passwd /etc/group ==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin==> /etc/group <== root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon # 从上面可以看到,确实有相同的部分喔!赶紧来整合一下![root@www ~]# join -t ':' -1 4 /etc/passwd -2 3 /etc/group 0:root:x:0:root:/root:/bin/bash:root:x:root 1:bin:x:1:bin:/bin:/sbin/nologin:bin:x:root,bin,daemon 2:daemon:x:2:daemon:/sbin:/sbin/nologin:daemon:x:root,bin,daemon # 同样的,相同的字段部分被移动到最前面了!所以第二个文件的内容就没再显示。 # 请读者们配合上述显示两个文件的实际内容来比对! |
这个 join 在处理两个相关的数据文件时,就真的是很有帮助的啦! 例如上面的案例当中,我的 /etc/passwd, /etc/shadow, /etc/group 都是有相关性的, 其中 /etc/passwd, /etc/shadow 以账号为相关性,至于 /etc/passwd, /etc/group 则以所谓的 GID (账号的数字定义) 来作为他的相关性。根据这个相关性, 我们可以将有关系的数据放置在一起!这在处理数据可是相当有帮助的! 但是上面的例子有点难,希望您可以静下心好好的看一看原因喔!
此外,需要特别注意的是,在使用 join 之前,你所需要处理的文件应该要事先经过排序 (sort) 处理! 否则有些比对的项目会被略过呢!特别注意了!
- paste
这个 paste 就要比 join 简单多了!相对于 join 必须要比对两个文件的数据相关性, paste 就直接『将两行贴在一起,且中间以 [tab] 键隔开』而已!简单的使用方法:
[root@www ~]# paste [-d] file1 file2 选项与参数: -d :后面可以接分隔字符。默认是以 [tab] 来分隔的! - :如果 file 部分写成 - ,表示来自 standard input 的数据的意思。范例一:将 /etc/passwd 与 /etc/shadow 同一行贴在一起 [root@www ~]# paste /etc/passwd /etc/shadow bin:x:1:1:bin:/bin:/sbin/nologin bin:*:14126:0:99999:7::: daemon:x:2:2:daemon:/sbin:/sbin/nologin daemon:*:14126:0:99999:7::: adm:x:3:4:adm:/var/adm:/sbin/nologin adm:*:14126:0:99999:7::: # 注意喔!同一行中间是以 [tab] 按键隔开的!范例二:先将 /etc/group 读出(用 cat),然后与范例一贴上一起!且仅取出前三行 [root@www ~]# cat /etc/group|paste /etc/passwd /etc/shadow -|head -n 3 # 这个例子的重点在那个 - 的使用!那玩意儿常常代表 stdin 喔! |
linux命令join与paste相关推荐
- linux命令去除重复的值,学习linux的Split 命令-linux下去除重复的命令uniq用法...-linux下join与paste命令的用法_169IT.COM...
先来看命令paste. paste将几个文件的相应行用制表符连接起来,并输出到标准输出. paste [选项] file1 file2 -d 指定不同于空格或tab键的域分隔符.例如用#分隔域,使用- ...
- 最常用 150 个Linux命令汇总(建议收藏)
点击上方[视学算法]→右上角[...]→[设为星标⭐] 来源:banana 童 www.cnblogs.com/bananaaa/p/7774467.html linux 命令是对 Linux 系统进 ...
- 盘点那些最常用的Linux命令,都应该记熟!
来源:cnblogs.com/chenliangchaoshuai/p/11827383.html linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存. ...
- sed,sort,uniq,join,cut,paste,split
linux学习--sed,sort,uniq,join,cut,paste,split ==============================sed======================= ...
- linux命令全集,Linux命令全集
下文是小编为你带来的Linux命令全集,欢迎大家阅读. 文件管理 cat chattr chgrp chmod chown cksum cmp cp cut diff diffstat file fi ...
- 这些最常用的Linux命令,每一条都应该学会!
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者:陈 ...
- 收集一些非常实用的Linux命令
linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心. 线上查询及帮助 ...
- 让windows cmd也用上linux命令
使用Linux时间长了 还是对Linux强大的命令折服,虽说Windows中doc肯定也会有命令,但是感觉一个是熟悉程度不佳,另一个就是不够强大.所以想在Windows下使用Linux命令,进行一些问 ...
- Linux 命令速查
学生信,Linux是最最基本的技能,要尽量将自己的工作平台转移到Linux,编程写脚本,这样会极大的提升工作效率,找工作时也不会太怂.Linux所有的任务都是通过命令来完成的,具有高度的统一性.Lin ...
最新文章
- 【图】2015年Google搜索引擎排名算法(完整版)
- vue-video-player集成videojs-contrib-hls实现.m3u8文件播放
- 腾讯offer-众里寻他千百度
- excel下划线转驼峰公式
- mysql 5.6.34 二进制下载_mysql 5.6.34 二进制
- mysql数据库密码为空_注意MySQL 数据库用户root密码为空_MySQL
- Linux实时监控日志文件的swatchdog
- Linux与windows的软/硬链接
- VS2010打开就自动关闭问题解决
- 干货~powershell与bash和docker在项目中怎么用
- linux和windows下,C/C++的sleep函数
- 程序员计算器 android6,程序员计算器
- 卷积神经网络模型之——VGG-16网络结构与代码实现
- 只有程序员才能读懂的西游记
- 脑瘫患儿家庭的森森林林双包胎赴京演出圆满成功!
- Hive数据类型(转:https://blog.csdn.net/xiaoqi0531/article/details/54667393)
- 北京-IT技术狗-顾名思义 解释一下当时随手写下这个名字
- Windows10黑体字体
- Python视觉深度学习系列教程 第一卷 第21章 案例:使用CNN破解验证码
- corelDRAW制作笔
热门文章
- java学习笔记—校验码的实现(15)
- (转载)Linux下pthread_once()函数
- leetcode 470. 用 Rand7() 实现 Rand10()
- 多看看 leetcode 128. 最长连续序列
- 阿里进军欧洲市场遇阻:仅凭复制中国模式难获成功
- 新京报快评:浙大设“新生高额奖学金”,为何就成了“抢生源”?
- 中国高中生近视率高达81%,眼科专家:源头在小学阶段
- mysql replication 协议_深入解析MySQL replication协议
- STC用PCA测量脉宽_用好手中的频谱仪-无线电信号监测技巧
- HashMap之tableSizeFor