Linux从放弃到入门:col、tr、join

本文首发于我的公众号码农之屋(id: Spider1818),专注于干货分享,包含但不限于Java编程、网络技术、Linux内核及实操、容器技术等。欢迎大家关注,二维码文末可以扫。


1 col简介

当我们使用shell命令">"和">>"将UNIX说明文件转为纯文本文件时,控制字符会变成乱码,col命令可以有效滤除这些控制字符

 

1.1 命令格式

col [option] [-l num]

 

1.2 col常用option

option

说明

-b

过滤所有控制字符,在每列位置只打印最后写的字符

-f

将处于半行分界线的字符打印在下一行

-p

不过滤未识别的控制符

-x

以空格代替Tab控制符

-l[缓冲区大小]

设置缓冲区大小,默认为128行

备注:关于col命令的详细信息请执行man col命令查询。

 

1.3 col示例

示例文本信息:

root@LTY:/opt# cat -A test.txt

test^I$

1)用空格替代Tab控制符("^I "),输出test.txt的内容

root@LTY:/opt # cat test.txt | col -x | cat -A

test$

 

2 tr简介

tr命令用于转换或删除字符,可将其当成为sed的简单版。

 

2.1 命令格式

tr [option]... set1 [set2]

 

2.2 tr常用option

option

说明

-c

取set1指定字符的补集

-d

删除set1指定的字符,不涉及set2

-s

将set1指定连续重复的字符用单字符替代

-t

将set2的字符替换set1的字符,多出不替换

NA

不带参数时,将set2的每个字符替换set1的每个字符,如果set1字符长度大于set2,则将set1多出来的字符用set2最后的字符替换

备注:关于字符集合内容在此不进行展示,想了解详细内容请执行man tr进行查询。

 

2.3 col示例

示例文本信息:

root@LTY:/opt# cat test.txt

aaBBccDDeeFFgg

1)不带参数将set2的字符替换set1字符

root@LTY:/opt # cat test.txt | tr "aBc" "12"

112222DDeeFFgg

2)用set2字符替换set1字符

root@LTY:/opt # cat test.txt | tr -t "aBc" "12"

1122ccDDeeFFgg

3)删除所有小写字符

root@LTY:/opt # cat test.txt | tr -d "a-z"

BBDDFF

4)将连续重复的字符用单字符替代

root@LTY:/opt # cat test.txt | tr -s "a-zA-Z"

aBcDeFg

5)取数据流中SET1中指定字符的补集

root@LTY:/opt # cat test.txt | tr -d -c "a-z\n"

aacceegg

 

3 join简介

join命令用于将两文件指定栏位相同的行连接起来,即按照两文件共同拥有的某一列,将对应的行拼接成一行。

 

3.1 命令格式

join [option] file1 file2

 

3.2 join常用option

option

说明

-a<12>

除显示相同栏位的行之外,还显示指定文件中不相同栏位的行

-i

比较栏位内容时,忽略大小写

-v<12>

不显示相同栏位的行,只显示指定文件中不相同栏位的行

-t<字符>

使用指定的分隔符

-1<栏位>

连接文件1指定的栏位

-2<栏位>

连接文件2指定的栏位

备注:想了解其他option请执行man join进行查询。

 

3.3 col示例

示例文本信息:

root@LTY:/opt # cat test1.txt

1 a

2 b

3 c

4 d

5 test



root@LTY:/opt# cat test2.txt

1A

2B

3C

4D

6test

1)第一行作为匹配字段,将test1和test2相同行连接起来

root@LTY:/opt # join test1.txt test2.txt

1 a A

2 b B

3 c C

4 d D

2)第一行作为匹配字段,将test1和test2相同行连接起来,同时显示test1未被连接的行

root@LTY:/opt # join -a 1 test1.txt test2.txt

1 a A

2 b B

3 c C

4 d D

5 test

3)第一行作为匹配字段,显示test1未被连接的行

root@LTY:/opt # join -v 1 test1.txt test2.txt

5 test

4)将连续重复的字符用单字符替代

root@LTY:/opt # join -t " " test1.txt test2.txt

1 a A

2 b B

3 c C

4 d D

 

我的公众号「码农之屋」(id: Spider1818) ,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值