linux tr命令实现windows文本格式与linux文本格式间的转换

tr 命令
转换和删除字符

选项:
-d --delete:删除字符
-s --squeeze-repeats:把连续重复的字符以一个字符表示,即去重
-c –C --complement:取字符集的补集

该命令会把/etc/issue中的小写字符都转换成大写字符
tr 'a-z' 'A-Z' < /etc/issue
删除fstab文件中的所有abc中任意字符
tr –d abc < /etc/fstab
将df命令输出的结果中为连续重复的空格,用一个空格取代
[root@localhost ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  16603136 7635296   8967840  46% /
devtmpfs                   485144       0    485144   0% /dev
tmpfs                      500664     140    500524   1% /dev/shm
tmpfs                      500664   26076    474588   6% /run
tmpfs                      500664       0    500664   0% /sys/fs/cgroup
/dev/mapper/centos-home   2037760   33000   2004760   2% /home
/dev/sda1                  201388  145376     56012  73% /boot
tmpfs                      100136      36    100100   1% /run/user/0
[root@localhost ~]# df > df.log
[root@localhost ~]# tr -s ' ' < df.log 
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root 16603136 7635292 8967844 46% /
devtmpfs 485144 0 485144 0% /dev
tmpfs 500664 140 500524 1% /dev/shm
tmpfs 500664 26076 474588 6% /run
tmpfs 500664 0 500664 0% /sys/fs/cgroup
/dev/mapper/centos-home 2037760 33000 2004760 2% /home
/dev/sda1 201388 145376 56012 73% /boot
tmpfs 100136 36 100100 1% /run/user/0
[root@localhost ~]# tr -s ' ' : < df.log
Filesystem:1K-blocks:Used:Available:Use%:Mounted:on
/dev/mapper/centos-root:16603136:7635292:8967844:46%:/
devtmpfs:485144:0:485144:0%:/dev
tmpfs:500664:140:500524:1%:/dev/shm
tmpfs:500664:26076:474588:6%:/run
tmpfs:500664:0:500664:0%:/sys/fs/cgroup
/dev/mapper/centos-home:2037760:33000:2004760:2%:/home
/dev/sda1:201388:145376:56012:73%:/boot
tmpfs:100136:36:100100:1%:/run/user/0

windows文本格式与linux文本格式间的转换,windows格式文本中比linux格式文本中多回车键'\r',通过tr删除'\r'实现格式转换
实例如下:
[root@localhost ~]# cat windows.txt
a
b
c

[root@localhost ~]# file windows.txt
windows.txt: ASCII text, with CRLF line terminators
[root@localhost ~]# hexdump windows.txt 
0000000 0d61 620a 0a0d 0063                    
0000007
[root@localhost ~]# hexdump -C windows.txt 
00000000  61 0d 0a 62 0d 0a 63                              |a..b..c|
00000007

[root@localhost ~]# tr -d '\r' <windows.txt >linux.txt

[root@localhost ~]# file linux.txt
linux.txt: ASCII text
[root@localhost ~]# hexdump linux.txt 
0000000 0a61 0a62 0063                         
0000005
[root@localhost ~]# hexdump -C linux.txt 
00000000  61 0a 62 0a 63                                    |a.b.c|
00000005

[root@localhost ~]# cat linux.txt
a
b
c

注意:不能使用 tr 命令将文件从 Unix 格式转换为 Windows(DOS)。

除此之外Linux还提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把"\r\n"转化成"\n",unix2dos把"\n"转化成"\r\n"。

  

posted @ 2021-10-17 21:49  咚咚小孩  阅读(286)  评论(0编辑  收藏  举报