文本处理工具命令——tr

一帮助说明

TR()                                       User Commands                                       TR()

NAME
tr - translate or delete characters SYNOPSIS
tr [OPTION]... SET1 [SET2] DESCRIPTION
Translate, squeeze, and/or delete characters from standard input, writing to standard output.

二常用选项

(一)删除字符或者分隔符

-d,--delete delete characters in SET1,do not translate删除指定字符,不做替换

-C,-C,--complement use the complement of SET1取删除指定字符的补集,相当r,reverse反转

示例——删除空白符

[root@centos73 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 1451152 50952048 3% /
devtmpfs 487964 0 487964 0% /dev
tmpfs 498988 0 498988 0% /dev/shm
tmpfs 498988 14076 484912 3% /run
tmpfs 498988 0 498988 0% /sys/fs/cgroup
/dev/sr0 4364408 4364408 0 100% /mnt
/dev/sda3 20961280 87452 20873828 1% /app
/dev/sda1 1038336 126596 911740 13% /boot
tmpfs 99800 0 99800 0% /run/user/
[root@centos73 ~]# df  |  tr   -d  ' '
Filesystem1K-blocksUsedAvailableUse%Mountedon
/dev/sda2524032001451152509520483%/
devtmpfs48796404879640%/dev
tmpfs49898804989880%/dev/shm
tmpfs498988140764849123%/run
tmpfs49898804989880%/sys/fs/cgroup
/dev/sr0436440843644080100%/mnt
/dev/sda32096128087452208738281%/app
/dev/sda1103833612659691174013%/boot
tmpfs998000998000%/run/user/


示例——使用设备生成随机数

默认显示的很多随机数是乱码的,要对其进行过滤,取出前30个没有乱码的字符

取出数字加字母就够用了

[root@centos72 ~]# cat  /dev/urandom  |  tr  -cd  '[:alnum:]' |  head  -c30
GcCS7V3zdbxf7ULACZxyileWOkVbb4[root@centos72 ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
4HRYAPkEmR9IU5DmwUCfPH5yFchmWk[root@centos72 ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
Xai5M56ExMu3lPTk3uItOrqOIyrHBi[root@centos72 ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
EM19jKg8elb0XaBZ5fBt6HlzvADj6V[root@centos72 ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
2nGHfnxibhXymvYY50933w9IKZY2a1[root@centos72 ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
FtlUPlUBAJqGuCF8D8mBWUA1Qy4mIE[root@centos72 ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
pP7Qq0iqqv3ualzDdf6JYcyA7nnL0X[root@centos72 ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
mcrr0qTGkAgFQ4Qp8wQYEOXkth6KBh[root@centos72 ~]#

示例——取6个字符,包含大小写字母

[root@centos71 ~]# tr -cd  'a-zA-Z0-9'< /dev/urandom  |  head  -c6
5PWu0c[root@centos71 ~]# tr -cd 'a-zA-Z0-9'< /dev/urandom | head -c6
eMHkgL[root@centos71 ~]# tr -cd 'a-zA-Z0-9'< /dev/urandom | head -c6
RlO3EL[root@centos71 ~]# tr -cd 'a-zA-Z0-9'< /dev/urandom | head -c6
pGlDTU[root@centos71 ~]# tr -cd 'a-zA-Z0-9'< /dev/urandom | head -c6
0WI1oX[root@centos71 ~]# tr -cd 'a-zA-Z0-9'< /dev/urandom | head -c6
pwho9R[root@centos71 ~]# tr -cd 'a-zA-Z0-9'< /dev/urandom | head -c6
IRe8FV[root@centos71 ~]#

(二)-s保留连续字符的第1个字符,删除其他字符


-s, --squeeze-repeats
              replace  each input sequence of a repeated character that is listed in SET1 with a sin?
              gle occurrence of that character
[root@centos73 ~]# df |grep "/sd" |tr -s  " "
/dev/sda2 % /
/dev/sda3 % /app
/dev/sda1 % /boot
[root@centos73 ~]# df |grep "/sd"
/dev/sda2 % /
/dev/sda3 % /app
/dev/sda1 % /boot

[root@centos73 ~]# cat /etc/issue
\S
Kernel \r on an \m [root@centos73 ~]# tr 'abcd' 'xyz' < /etc/issue
\S
Kernel \r on xn \m [root@centos73 ~]# cat /etc/issue
\S
Kernel \r on an \m

难点——tr的替换

情形一:替换前字符长度等于替换后字符长度

这种情况最简单,全部替换,并且一一对应

[root@centos71 test2]# echo  abcd  >  tr3.txt
[root@centos71 test2]# cat tr3.txt
abcd
[root@centos71 test2]# tr 'abcd' '1234' < tr3.txt

情形二:替换前字符长度大于替换后字符长度

前者多余的字符被后者最后一个字符替换

[root@centos71 test2]# echo  abcd  >>  tr.txt
[root@centos71 test2]# cat tr.txt
abcd
[root@centos71 test2]# tr 'abcd' '123'
^C
[root@centos71 test2]# tr 'abcd' '123' < tr.txt

情形三:替换前字符长度小于替换后字符长度

前者多余的字符保留

[root@centos71 test2]# echo   abcd  >  tr2.txt
[root@centos71 test2]# cat tr2.txt
abcd
[root@centos71 test2]# tr 'abc' '1234' < tr2.txt
123d

情形四:替换前后字符出现重复情况

替换为最后出现的字符

[root@centos71 test2]# echo   abcba  >  tr4.txt
[root@centos71 test2]# cat tr4.txt
abcba
[root@centos71 test2]# tr 'abcba' '123456' < tr4.txt


命令——tr的更多相关文章

  1. Linux命令-tr

    tr命令用于转换文本文件中的字符 [root@localhost test]# cat .txt abcdefg asdfoui asdfqer [root@localhost test]# cat ...

  2. linux 命令 — tr

    tr 对stdin字符进行替换.删除和压缩,基本形式 tr [options] set1 set2 将输入的字符串中的set1字符转换为set2中对应位置的字符 set1.set2表示字符集,如果se ...

  3. 【Linux】字符转换命令tr

    tr (traslate的缩写)可以用来删除一段信息当中的文字,或者是进行文字信息的替换! [root@www ~]# tr [-ds] SET1 ... 选项与参数: -d :删除信息当中的 SET ...

  4. linux基础命令---tr

    tr 删除或者更改文件中的字符串,这个指令一般需要两个字符集. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法       ...

  5. 转换和删除重复命令tr

    前几篇文章介绍了几个用于处理字符的命令和工具,然而在处理大小写转换.删除重复字符等任务时,这些命令处理起来相对较为麻烦.这里将简单介绍Linux下自带的tr命令,相对于其他命令而言,其语法较为简单,比 ...

  6. Linux Shell 命令--tr

    tr        用来从标准输入中通过替换或删除操作进行字符转换                -c或--complerment 取代所有不属于第一字符集的字符.                -d ...

  7. linux 实用命令 —— tr

    1. [:alnum:] tr -cd '[:alnum:]' -d:delete:-c:complement:-cd:删除后边的参数以外的: [:class:] [:alpah:]:字母,[:dig ...

  8. tr命令的使用

    tr是translate的简写,亦即翻译,但是遗憾的是,它不能翻译句子,只能翻译单个字符. 1 tr的工作原理是什么? 先记住一点,tr命令不接受指定的文件参数,而只是对标准输入进行翻译.好了,记住这 ...

  9. 【Linux基础】tr命令替换和删除字符

    1.tr命令 tr可以对来自标准输入的字符进行替换.压缩和删除,可以将一组字符变成另外一组字符.通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其 ...

随机推荐

  1. leetcode 39. 组合总和(python)

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限制重复被选 ...

  2. Delphi XE2 之 FireMonkey 入门(6) - TLine、TEllipse、TCircle、TPie、TArc、TRectangle、TRoundRect、TCalloutRectangle

    它们都是继承自 TShape 类, 共同拥有如下属性: Fill            : TBrush;      //填充 Stroke          : TBrush;      //边线( ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_6_练习_序列化集合

  4. 阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第3节 Calendar类_1_Calendar类介绍_获取对象的方式

    Calendar.getInstance()返回的就是Calendar的子类对象.GregorianCalendar 说明Calendar类重写了toSting的方法 时区亚洲的上海

  5. 多进程---multiprocessing/threading/

    一.多进程:multiprocessing模块 多用于处理CPU密集型任务 多线程 多用于IO密集型任务 Input Ouput 举例: import multiprocessing,threadin ...

  6. delphi 语法 点滴总结clientdataset

    clientdataset   记录数 是从1 开始的. self.ClientDataSet5.RecNo   记录数 可以 读写 赋值. 随意改动. 哈哈 很方便.

  7. github.com/oschwald/maxminddb-golang 安装报错

    安装 maxminddb-golang错误: dill@ubuntu-vm:~/workspace/go/src/github.com$ go get github.com/oschwald/maxm ...

  8. mac 添加mysql的环境变量和删除mysql

    添加环境变量 1.创建 .bash_profile,已创建过忽略这步 (1)启动终端 (2)进入当前用户的home目录(默认就是):         cd ~ 或 cd /Users/YourMacU ...

  9. 详细解析arry.map() ,function.apply() 方法

    首先转载一篇博文:关于map 和callbackfn 的一些参数和返回值可以查看以下链接. http://www.cnblogs.com/xuan52rock/p/4460938.html array ...

  10. 20191105 《Spring5高级编程》笔记-第6章

    第6章 Spring JDBC支持 Spring官方: 位于Spring Framework Project下. 文档: https://docs.spring.io/spring-framework ...