字符转换管道命令
概念
- 字符转换管道命令可以将显示出来的信息进行字符转换,有的命令也可以将两个文件合并成一个文件
注意事项
- 这些管道命令只是将显示出来的信息进行转换而已,而不是真的改变文件的内容
一、tr
1.功能
- 可以删除、替换文字信息
2.注意事项
- tr命令实际是以正则表达式的方式来替换数据的,也可以用在正则表达式中
- 不加任何参数时为替换
3.命令格式
- tr [参数] str1 str2...
相关参数与选项
- str1、str2....:想要操作的字符。字符用' '引号括起来或者不用' '引号括起来都是可以的
- -d:删除信息中的str字符
- -s:替换掉重复的str字符
4.演示案例
- 将last显示的信息中小写变为大写显示
last | tr ['a-z'] ['A-Z']
同理:last | tr '['a-z']' '['A-Z']'
- 将/etc/passwd显示的信息中:删除
cat /etc/passwd | tr -d ':'
- 先用unix2dos命令将文件中的unix换行符转换为dos换行符,然后再用tr命令将文件中的dos换行符的'\r'或'^M'删除,存入到另一个文件中
第一步:先将unix换行符转换为dos换行符:cp /etc/passwd ~/passwd && unix2dos ~/passwd
第二步:查看~/passwd文件同时用tr将dos换行符的\r删除,并且用输出流重定向写入到~/passwd.Linux文件中
cat ~/passwd | tr -d '\r' > ~/passwd.Linux
二、col
1.功能
- 对文件中的tab键、换行符等特殊符号进行处理
2.命令格式
- col [参数]
相关参数与选项
- -x:将文件中的tab键转换为对等的空格键,dos的换行符换成unix格式的换行符等
- -b:
3.演示案例
使用-x将tab转换为对等的空格键,dos换行符转换为unix换行符
- 第一步:makefile-1为dos下的文件,先cat -A查看特殊字符(换行为^M$,tab为^I)
cat -A makefile-1
- 第二步:使用col转换在查看
cat makefile-1 | col -x | cat -A | more
三、join
1.功能
- 用于合并两个文件之间的数据,重点在“合并”这个字上面。只能处理两个文件
- join会找到两个文件之间相同数据的那一行,然后将两个文件相同的那一行合并在一起
2.注意事项
- join想要处理两个文件,这两个文件的内容格式尽量是要相同的
- join默认以空格符分割数据,并且默认对比的是分割后第一栏的数据
- 使用join将两个文件合并之后,处理的那一栏数据会被放在每一行的最前面一栏
3.命令格式
- join [参数] file1 file2
相关参数与选项
- -t:后面接分割字符,将两个文件以指定分隔符切割
- -i:忽略大小写的差异
- -1:后面接数字,代表file1要处理那一行
- -2:后面接数字,代表file2要处理那一行
4.演示案例
- 案例一:/etc/passwd与/etc/shadow每一行数据都是用":"隔开的,并且这两个文件的第一栏数据都是账号名。我们用join将两个文件以":"分割,然后合并。在下面的第二张图中可以看到root用户的数据被合并到一行了,并且是第二个文件的数据接在第一个文件数据的后面
- 案例二:/etc/passwd第四栏是GID,这个GID记录在/etc/group文件中是第三栏。我们使用join分别将这两个文件的第四栏和第三栏合并在一起
四、paste
1.功能
- paste与join相同,也是合并两个文件数据的内容,但是paste可以处理多个文件
- 不过paste不会使用什么分隔符,而是直接把两个/多个文件的数据的每一行合并。中间默认好用Tab隔开,而不是合并在一起
2.注意事项
- paste合并之后,会用tab将两个文件的内容隔开
3.命令格式
- paste [选项] file1 file2 file3.....
相关参数与选项
- -d:后面接分隔符,此分隔符是用来将两个文件数据分开的标识符
- -:文件用-来代表,表示要合并的数据来自于前面的标准输入的意思,下面案例三会用的
4.演示案例
- 案例一:将/etc/passwd与/etc/shadow合并,可以看到每一行数据都是用tab隔开的,并不会合并
- 案例二:承上,可以看到每一行数据都是用^^^隔开隔开的
- 案例三:合并多个文件,先用cat将/etc/group读出来,然后再使用paste将/etc/passwd和/etc/shadow合并在一起,此处使用到-参数
五、expand
1.功能
- 将tab键转换为空格键
2.命令格式
- expand [参数] file
相关参数与选项
- -t:后面接数字,代表tab以多少个空格键来替换。默认情况tab以8个空格键替换
- -:文件用-来代表,表示要处理的数据来自于前面的标准输入的意思
3.演示案例
我们将/etc/manpath.config文件中的tab键用空格替换
- 第一步:先查看一下/etc/manpath.config文件的内容,每一行都有tab隔开
- 第二步:我们使用cat -A查看一下特殊字符(^I代表tab键的意思,一个^I就是一个tab)
- 第三步:使用expand将一个^I转换为6个空格