EDA365电子论坛网
标题:
Linux join命令
[打印本页]
作者:
piday123
时间:
2021-9-29 14:35
标题:
Linux join命令
- z' S: R/ `8 ?7 f1 X- K/ [: y
Linux join命令用于将两个文件中,指定栏位内容相同的行连接起来。
7 f0 k% W4 l# ?5 l E
5 Z# J) }$ [* Q; B: c# T4 _
找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
" R5 @0 ?" W! F) C5 R7 a$ [
1 u+ H0 f! W. G1 N: l5 @5 x' g
语法
5 X; ~# Z" [- r1 i1 }
, M: |' Y% J- [6 _1 ` Z2 `
join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
$ W, x4 c* Q5 S
' M, [2 l) `2 Y, W5 o. p
参数:
0 b$ y9 a7 z* [ ?: P" P# \5 I
/ N% Z2 O0 C o
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
0 Q' L* k0 X3 D! Y) g2 M0 q
-e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
1 i1 g& d$ D9 N( L7 ^; [
-i或--igore-case 比较栏位内容时,忽略大小写的差异。
0 ~. ?. K k& d6 G6 x( ?
-o<格式> 按照指定的格式来显示结果。
( V: P9 H; E: `; N
-t<字符> 使用栏位的分隔字符。
+ h# B% B1 {& h) v0 F
-v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。
2 a& r9 Z7 y5 }9 x* x0 g4 [
-1<栏位> 连接[文件1]指定的栏位。
% ` W" l; i& C7 I/ K3 W
-2<栏位> 连接[文件2]指定的栏位。
9 J) k4 K& ]6 e/ o( [
--help 显示帮助。
+ z2 ?0 Y0 L4 [. T
--version 显示版本信息。
. F% u9 q8 r. h- ?5 U e. h2 j
实例
& D( D+ K, c6 _ u, s3 h. _5 p# e
连接两个文件。
! r( ]+ ~+ S# b' X# J
0 Q; i1 K0 b' s9 _9 r
为了清楚地了解join命令,首先通过cat命令显示文件testfile_1和 testfile_2 的内容。
6 Z7 e) o, \; ?+ b* B
1 y6 |3 t X* s* {+ ^1 e% E9 ] x9 I; R
然后以默认的方式比较两个文件,将两个文件中指定字段的内容相同的行连接起来,在终端中输入命令:
5 f/ c- m$ w5 Q) R( K# v7 f2 G, L5 W
/ ^! S. ~2 W6 M
join testfile_1 testfile_2
, y, @7 y0 H& @6 r V
首先查看testfile_1、testfile_2 中的文件内容:
- k. P& C7 Y5 |5 L
3 |7 ?4 J0 L* F ?5 m
$ cat testfile_1 #testfile_1文件中的内容
* N0 x# P; l2 d: E
Hello 95 #例如,本例中第一列为姓名,第二列为数额
" [) u; j; G. j* z
Linux 85
! V9 {) J9 [7 I% R/ v) w/ ~9 x
test 30
`8 x7 W6 `* V' f* k3 f2 |
cmd@hdd-desktop:~$ cat testfile_2 #testfile_2文件中的内容
0 \: S$ I6 [& T7 T! L ?; m- _: U$ _
Hello 2005 #例如,本例中第一列为姓名,第二列为年份
( F- [, r$ P: l' a. i
Linux 2009
# q- ~% C; s& e p( E# B/ O
test 2006
9 W6 b A3 l! n$ l1 n, R
然后使用join命令,将两个文件连接,结果如下:
6 e4 s9 a4 K6 }4 {
7 d0 V. H, q8 K5 Z3 n4 S1 F
$ join testfile_1 testfile_2 #连接testfile_1、testfile_2中的内容
4 R, z; Y4 f* D4 Z
Hello 95 2005 #连接后显示的内容
; |& T+ i1 u7 O. j) C
Linux 85 2009
9 I- K9 z1 o9 n) b5 C/ t
test 30 2006
7 @$ X) d) C& d: }
文件1与文件2的位置对输出到标准输出的结果是有影响的。例如将命令中的两个文件互换,即输入如下命令:
. F- @" @3 }' U. R4 E1 q k- r6 H
8 i; Q. R* N; l- j c/ B
join testfile_2 testfile_1
- s1 m0 M4 P% k6 ^* ^
最终在标准输出的输出结果将发生变化,如下所示:
. @4 j3 K5 P3 H: O
4 V8 s8 k8 n8 T/ ^9 p. k( f# i2 [( K
$ join testfile_2 testfile_1 #改变文件顺序连接两个文件
0 S- r& {9 a+ P% F. O4 Y
Hello 2005 95 #连接后显示的内容
, d, d l T, N+ Y- n) x0 R" t
Linux 2009 85
0 S; j( a9 I+ l. H5 K+ R6 ?: M
test 2006 30
2 T! Z1 g6 a0 Y" t; W
5 a& P k: F& c9 K4 Z
作者:
SsaaM7
时间:
2021-9-29 15:27
Linux join命令
作者:
ExxNEN
时间:
2021-9-29 16:22
Linux join命令用于将两个文件中,指定栏位内容相同的行连接起来
作者:
loveeatmore
时间:
2021-9-29 16:23
找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2