join命令

本文详细介绍了Linux下join命令的用法及示例,包括内连接、左连接、右连接、全连接等操作,并展示了如何指定输出字段和分隔符。

功能说明:

将两个文件中,指定栏位内容相同的行连接起来。

语法:join [-i][-a<1|2>][-e<string>][-o<格式>] [-t<字符>][-v<1|2>][-1<栏位>][-2<栏位>][--help] [--version][文件1][文件2]

补充说明:

找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。

参数:

-a<1|2>  除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。

-e<字符串[文件1][文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。

-i--igore-case  比较栏位内容时,忽略大小写的差异。

-o<格式按照指定的格式来显示结果。

-t<字符使用栏位的分隔字符。

-v<12>  -a相同,但是只显示文件中没有相同栏位的行。

-1<栏位连接[文件1]指定的栏位。

-2<栏位连接[文件2]指定的栏位。

--help  显示帮助。

--version  显示版本信息。

指定输出字段:

-o <FILENO.FIELDNO> ...

其中fileno=1表示第一个文件,fileno=2表示第二个文件,fieldno表示字段序号,从1开始编号。默认会全部输出,但关键字列只输出一次。

比如:-o 1.1 1.2 2.2 表示输出第一个文件的第一个字段、第二个字段,第二个文件的第二个字段。

使用示例

示例一 内连接(忽略不匹配的行)

不指定任何参数的情况下使用join命令,就相当于数据库中的内连接,关键字不匹配的行不会输出。

[root@rhel55 linux]# cat month_cn.txt

1       一月

2       二月

13      十三月,故意的

[root@rhel55 linux]# cat month_en.txt

1       January

2       February

14      MonthUnknown

注:注意两个文件的内容,中文版的多了十三月,英文版的多了14月,这纯粹是为了方便演示。

[root@rhel55 linux]# join month_cn.txt month_en.txt 

1 一月 January

2 二月 February

[root@rhel55 linux]#

示例二 左连接(又称左外连接,显示左边所有记录)

显示左边文件中的所有记录,右边文件中没有匹配的显示空白。

[root@rhel55 linux]# join -a1 month_cn.txt month_en.txt

1 一月 January

2 二月 February

13 十三月,故意的

[root@rhel55 linux]#

示例三 右连接(又称右外连接,显示右边所有记录)

显示右边文件中的所有记录,左边文件中没有匹配的显示空白。

[root@rhel55 linux]# join -a2 month_cn.txt month_en.txt 

1 一月 January

2 二月 February

14 MonthUnknown

[root@rhel55 linux]#

示例四 全连接(又称全外连接,显示左边和右边所有记录)

[root@rhel55 linux]# join -a1 -a2 month_cn.txt month_en.txt

1 一月 January

2 二月 February

13 十三月,故意的

14 MonthUnknown

[root@rhel55 linux]#

示例五 指定输出字段

比如参数 -o 1.1 表示只输出第一个文件的第一个字段。

[root@rhel55 linux]# join -o 1.1 month_cn.txt month_en.txt

1

2

[root@rhel55 linux]# join -o 1.1 2.2 month_cn.txt month_en.txt  

1 January

2 February

[root@rhel55 linux]# join -o 1.1 2.2 1.2 month_cn.txt month_en.txt

1 January 一月

2 February 二月

[root@rhel55 linux]# join -o 1.1 2.2 1.2 1.3 month_cn.txt month_en.txt 

字段1.3并不存在

1 January 一月

2 February 二月

[root@rhel55 linux]#

示例六 指定分隔符

[root@rhel55 linux]# join -t ':' /etc/passwd /etc/shadow

root:x:0:0:root:/root:/bin/bash:$1$K8WSIAfQ$9i1h6a4V1XeIn0lv.CT53/:14833:0:99999:7:::

bin:x:1:1:bin:/bin:/sbin/nologin:*:14833:0:99999:7:::

原文

http://www.cnblogs.com/agilework/archive/2012/04/18/2454877.html

### Python中`join()`方法的使用说明及示例 在Python中,`join()`方法是一个字符串方法,用于将可迭代对象(如列表、元组、集合等)中的元素以指定的分隔符连接成一个字符串。该方法的语法为:`separator.join(iterable)`,其中`separator`是用于连接元素的字符串,`iterable`是需要连接的可迭代对象。 以下是一些常见的用法和示例: #### 1. 连接列表中的元素 ```python my_list = ['Hello', 'world', 'Python'] result = ' '.join(my_list) print(result) # 输出:Hello world Python ``` 此代码片段展示了如何使用空格作为分隔符将列表中的元素连接成一个字符串[^2]。 #### 2. 连接字符串的字符 ```python my_string = 'Hello' result = '-'.join(my_string) print(result) # 输出:H-e-l-l-o ``` 在此示例中,`join()`方法将字符串中的每个字符通过指定的分隔符`-`连接起来。 #### 3. 连接元组中的元素 ```python my_tuple = ('Hello', 'world', 'Python') result = '|'.join(my_tuple) print(result) # 输出:Hello|world|Python ``` 这里展示了如何使用`|`符号将元组中的元素连接成一个字符串[^2]。 #### 4. 处理字典中的键 当`join()`方法应用于字典时,它默认操作的是字典的键。需要注意的是,所有键必须是字符串类型,否则会引发`TypeError`异常。 ```python my_dict = {'key1': 'value1', 'key2': 'value2'} result = ','.join(my_dict) print(result) # 输出:key1,key2 ``` 如果字典的键不是字符串类型,则需要先将其转换为字符串[^4]。 #### 5. 使用自定义分隔符 可以使用任意字符串作为分隔符,例如逗号、换行符等: ```python my_list = ['apple', 'banana', 'cherry'] result = ', '.join(my_list) print(result) # 输出:apple, banana, cherry ``` #### 注意事项 - `join()`方法只能用于字符串类型的可迭代对象。如果可迭代对象中的元素不是字符串,则需要先将其转换为字符串[^4]。 - 如果尝试对非字符串类型的元素调用`join()`方法,将会抛出`TypeError`异常。 ### 示例总结 `join()`方法的主要用途是将可迭代对象中的元素以指定的分隔符连接成一个字符串。它的灵活性使其成为处理字符串拼接的强大工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值