Linux(入门基础):66---字符转换管道命令(tr、col、join、paste、expand)

字符转换管道命令

概念

  • 字符转换管道命令可以将显示出来的信息进行字符转换,有的命令也可以将两个文件合并成一个文件

注意事项

  • 这些管道命令只是将显示出来的信息进行转换而已,而不是真的改变文件的内容

一、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个空格

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/88072421