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"。