==> /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:$6$wtbCCce/PxMeE5wm$KE2IfSJr...:16559:0:99999:7:::
bin:*:16372:0:99999:7:::
daemon:*:16372:0:99999:7:::
#
由
输
出的
资
料可以
发现这两个
文件
的最左
边
字段都是相同
账号
!且以
:
分隔
[root@study ~]#
join
-
t ':' /etc/passwd /etc/shadow | head
-
n 3
root
:x:0:0:root:/root:/bin/bash:
$6$wtbCCce/PxMeE5wm$KE2IfSJr...:16559:0:99999:7:::
bin
:x:1:1:bin:/bin:/sbin/nologin:
*:16372:0:99999:7:::
daemon
:x:2:2:daemon:/sbin:/sbin/nologin:
*:16372:0:99999:7:::
#
透
过
上面
这个动
作,我
们
可以
½两个
文件
第一字段相同者整合成一列!
#
第二
个
文件
的相同字段并不
会显
示
(
因
为
已
经
在最左
边
的字段出
现
了啊!
)
范例二:我
们
知道
/etc/passwd
第四
个
字段是
GID
,那
个
GID
记录
在
/etc/group
当
中的第三
个
字段,
请问
如何
½两个
文件
整合?
[root@study ~]#
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
:
bin:x:
1
:
daemon:x:
2
:
#
从
上面可以看到,确
实
有相同的部分喔!赶
½来
整合一下!
[root@study ~]#
join
-
t ':'
-
1 4 /etc/passwd
-
2 3 /etc/group | head
-
n 3
0
:root:x:0:root:/root:/bin/bash:
root:x:
1
:bin:x:1:bin:/bin:/sbin/nologin:
bin:x:
2
:daemon:x:2:daemon:/sbin:/sbin/nologin:
daemon:x:
#
同
样
的,相同的字段部分被移
动
到最前面了!所以第二
个
文件
的
内
容就
没
再
显
示。
#
请读
者
们
配合上述
显
示
两个
文件
的
实际内
容
来
比
对
!
这个
join
在处理两个相关的数据文件时,就真的是很有帮助的啦!
例如上面的案例当中,我的
/etc/passwd, /etc/shadow, /etc/group
都是有相关性的,
其中
/etc/passwd, /etc/shadow
以账号为相关性,
至于
/etc/passwd, /etc/group
则以所谓的
GID (
账号的数字定义
)
来作为他的相关性。根据这个相关性,
我们可以½有关系的资料放置在一起!这在处理数据可是相当有帮助的!
但是上面的例子有点难,
希望您可以静下心好好的看一看原因喔!