|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. F! U- u( [) u: \ o2 L. kLinux join命令用于将两个文件中,指定栏位内容相同的行连接起来。
# W* [ ]% [ Q; t' [
, _8 e J" A u3 Y- q5 w2 A找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
: e; E+ c* p6 L9 \, ~& q
2 Q7 |" o, o" J语法
4 z/ _" s8 q* e5 _$ a$ ~
o8 l7 p" k! ~. \1 S# u/ Kjoin [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
8 D% J- y( l! j! \
/ R+ Q9 l% x/ c4 c: _, n: p! w5 f. s参数:. j9 v- c2 J2 I
[ U; p" I0 R" S1 M! h-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。4 l8 c6 U9 |# O" {* v1 b% f w
-e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。4 G9 m# i4 P- G4 v) E
-i或--igore-case 比较栏位内容时,忽略大小写的差异。+ U( r" t: x! C8 T% O
-o<格式> 按照指定的格式来显示结果。
" |9 I/ R, ~# ` ^8 H: ?-t<字符> 使用栏位的分隔字符。
' I' w5 o# j9 g5 E$ c+ C-v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。2 g/ {. ^" h0 t: ]; u* o# i+ i
-1<栏位> 连接[文件1]指定的栏位。5 E% L- Y* `) B9 O3 ]/ u
-2<栏位> 连接[文件2]指定的栏位。
- K6 x \! w- Z3 J8 H--help 显示帮助。/ v0 \# u* _$ o( L. V" k
--version 显示版本信息。
& ~( ~7 D' [! ^) O& H! T实例
4 J$ K: `1 A7 |+ G连接两个文件。2 y ~) ~2 {- P% L5 P4 A% i
9 \! e$ g+ A; O% `* J为了清楚地了解join命令,首先通过cat命令显示文件testfile_1和 testfile_2 的内容。
( F3 n4 y! g- l% ]8 A" x$ O7 l/ j. u) E. B5 ^! \' {
然后以默认的方式比较两个文件,将两个文件中指定字段的内容相同的行连接起来,在终端中输入命令:
. Y, @8 F3 M2 H' p7 a
) u7 F4 v% C: q4 G9 Ijoin testfile_1 testfile_2 / [3 i* H. t- x+ g- i1 I' I5 k
首先查看testfile_1、testfile_2 中的文件内容:
' o, \5 p' Q, A3 g a7 i
& u2 c) e5 z$ r$ cat testfile_1 #testfile_1文件中的内容 u+ N' N0 O1 e- c' [
Hello 95 #例如,本例中第一列为姓名,第二列为数额
+ C% h0 `5 @7 w" _& B: CLinux 85 1 k: d8 \& ]; V; }" M
test 30 7 I2 f0 v5 H$ z2 q
cmd@hdd-desktop:~$ cat testfile_2 #testfile_2文件中的内容
8 Q( C3 C2 _; V9 \* |) [Hello 2005 #例如,本例中第一列为姓名,第二列为年份
% T0 `/ g7 o; Z, X$ h( \Linux 2009
& k6 M6 N3 n' F4 Ttest 2006 # G2 c" P# q1 Z4 e- O
然后使用join命令,将两个文件连接,结果如下:
& a4 @$ A% W8 K/ T& y8 i: I. E, o9 p. F( r% `6 Z. F' ~$ L/ w
$ join testfile_1 testfile_2 #连接testfile_1、testfile_2中的内容
8 `. ^9 b. o B) ^Hello 95 2005 #连接后显示的内容
8 m6 c; f( ^: ?- N( a- NLinux 85 2009
6 `+ x" P+ n3 M$ a. Htest 30 2006
# _+ N* I. O6 l& @2 ?) @* p, Q文件1与文件2的位置对输出到标准输出的结果是有影响的。例如将命令中的两个文件互换,即输入如下命令:
* |2 W- u) M9 ?& ]( A/ ?4 E }* v) x* ?; l2 k. K! \9 I
join testfile_2 testfile_1
5 G t' R- c% X4 m9 `- U5 n最终在标准输出的输出结果将发生变化,如下所示:
" ^) a) I. o0 \# h1 R& ~# d
$ R* k" @0 B% @8 D0 y# d; x$ join testfile_2 testfile_1 #改变文件顺序连接两个文件 ) ~) V3 U! T' U* Z- M
Hello 2005 95 #连接后显示的内容
; K) g o2 u" {$ k3 _% y+ T) z7 F' ]Linux 2009 85
3 N. y% m4 x3 q( g; R1 xtest 2006 30
. N# H0 \9 D1 B2 r( I0 H1 O& a+ x" V
% |/ `3 S4 g8 v& U6 S g |
|