|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ \, S0 S9 f3 c3 jLinux join命令用于将两个文件中,指定栏位内容相同的行连接起来。
, @( p" v# E5 t# G+ I0 Y1 o4 a1 ]$ Q. v3 l& c1 ?0 c
找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
9 b: [+ _3 o& V4 ~* i5 O7 ]" G3 V: Q, \; t! A4 D; u' U
语法
U9 B/ P+ Q, ~" j# A% D, d6 } }6 H2 a$ b$ r
join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
& b d, y: H# }/ q; I
8 m6 d) I. m1 e1 c! j参数:
6 ?5 A- y4 W$ f8 ?9 E( @4 U/ j9 g1 \8 Q/ F- R/ N
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。3 G# c9 r% h: s1 d
-e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
; Z0 o) b+ t1 S8 ]+ K9 K-i或--igore-case 比较栏位内容时,忽略大小写的差异。" y* M" d, S! U
-o<格式> 按照指定的格式来显示结果。! o: E1 C8 k1 B @
-t<字符> 使用栏位的分隔字符。) e' N% i# F, J5 d: G. ` Y
-v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。$ Q, R, ?8 D4 x( R
-1<栏位> 连接[文件1]指定的栏位。
2 D [9 j* \! z) b6 | F* ?-2<栏位> 连接[文件2]指定的栏位。# y2 ]1 x2 r( ^/ o
--help 显示帮助。/ @- u) M1 [7 h% i( x
--version 显示版本信息。
& L( L" c; D/ b& J6 z: {实例
# w3 @; k* l8 ^ M' t B$ y; L/ R8 }连接两个文件。
- [& F. U7 z; t! \6 c9 J$ Y9 [- h) n8 q5 M0 ?
为了清楚地了解join命令,首先通过cat命令显示文件testfile_1和 testfile_2 的内容。% Y; ~" I" S8 t) _& [4 K. Y
p! d" e( L. `# D2 M, u' s. F) M0 }然后以默认的方式比较两个文件,将两个文件中指定字段的内容相同的行连接起来,在终端中输入命令:/ N& o+ w: R5 C r% m$ r& O
5 [: s7 Z& E2 Y- Q& e
join testfile_1 testfile_2 # j R+ ~ k' g4 x* \5 e1 Y
首先查看testfile_1、testfile_2 中的文件内容:
; S# |4 Z. q% q# i& Q* D* ]; h' f( V4 Z3 {( D
$ cat testfile_1 #testfile_1文件中的内容
' y8 m$ r: O p& i+ `" h$ PHello 95 #例如,本例中第一列为姓名,第二列为数额
: S' A4 Z: j, O: n/ x6 a$ A% SLinux 85
" F6 I, j" A2 U9 U2 wtest 30
* T: q8 e7 U: n1 }cmd@hdd-desktop:~$ cat testfile_2 #testfile_2文件中的内容 ; Y( a5 {9 i" U9 L9 ]* G
Hello 2005 #例如,本例中第一列为姓名,第二列为年份 ) J+ p6 k4 e' U- y1 E1 [ e3 h: L
Linux 2009
7 F( F8 F3 `# ?" L& o8 V% ntest 2006 4 J+ ~0 d. M$ u$ S
然后使用join命令,将两个文件连接,结果如下:
! Q. D9 ^- s7 Y) a; c' C7 @ M! i! l5 O6 Q$ e
$ join testfile_1 testfile_2 #连接testfile_1、testfile_2中的内容 4 R" k' g, f3 F* v$ A4 @ N
Hello 95 2005 #连接后显示的内容 ! @+ P4 V7 W6 v O# h; B" o7 C
Linux 85 2009
i/ o# F. ], Y, [, f9 V, Qtest 30 2006 * x! ?' f+ U b1 D. B
文件1与文件2的位置对输出到标准输出的结果是有影响的。例如将命令中的两个文件互换,即输入如下命令:0 b( w! W. e: m( |4 R
" b, F) _2 U5 L2 |- c% Z$ s' Zjoin testfile_2 testfile_13 c; K" W" L6 X3 G: A0 _
最终在标准输出的输出结果将发生变化,如下所示:
" g( `' Y9 W' A- S' I j; m- D2 {* x5 f) {3 _0 s
$ join testfile_2 testfile_1 #改变文件顺序连接两个文件 & a8 u$ P4 C& y* p$ m
Hello 2005 95 #连接后显示的内容 & s2 c+ C; E, Y \
Linux 2009 85
3 a: y1 h/ q+ ], M, `, V+ xtest 2006 30
0 L- m( B% C5 G6 X( ~5 i! k( W2 r% z, Q( ^2 ] b( |6 X1 n6 }
|
|